sql >> Database >  >> NoSQL >> MongoDB

MongoDB - Beperk de resultaten van een zoekopdracht

Retourneer alleen het aantal documenten dat u nodig heeft met de limit() methode.

In MongoDB kunt u de limit() . gebruiken methode om een ​​maximum aantal documenten op te geven dat een cursor moet retourneren.

Wanneer u een verzameling opvraagt ​​met behulp van de db.collection.find() methode, kunt u limit() . toevoegen om de limiet op te geven.

Voorbeeld

Laten we eerst een zoekopdracht uitvoeren zonder een limiet (zodat we kunnen zien hoeveel documenten worden geretourneerd):

Zonder limiet

db.artists.find( { albums: { $exists: false }} )

Resultaat:

{ "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" }
{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }
{ "_id" : 1, "artistname" : "AC/DC" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" : "Bastille" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname" : "Gang of Four" }

Met een limiet

OK, dus laten we de resultaten beperken tot 3 documenten:

db.artists.find( { albums: { $exists: false }} ).limit(3)

Resultaat:

{ "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" }
{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }
{ "_id" : 1, "artistname" : "AC/DC" }

In onze zoekopdracht gebruiken we de $exists operator om te controleren op het bestaan ​​van een veld. In dit geval sluiten we die artiesten uit die een albums . hebben veld in het document.

Dit kan gemakkelijk worden omgeschakeld naar { $exists: true } om alleen die artiesten op te nemen met een albums veld.

Voeg de skip() toe Methode

U kunt de skip() . gebruiken methode om naar een document binnen de cursor te gaan. Met andere woorden, u kunt bepalen waar MongoDB begint met het retourneren van de resultaten.

db.artists.find( { albums: { $exists: false }} ).limit(3).skip(1)

Resultaat:

{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }
{ "_id" : 1, "artistname" : "AC/DC" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" }

U kunt dus zien dat het het eerste resultaat heeft overgeslagen, maar toch 3 documenten heeft geretourneerd.

Merk op dat skip() kan op elke zoekopdracht worden gebruikt (niet alleen die met limit() ).

De zoekopdracht bovenaan deze pagina leverde bijvoorbeeld 6 documenten op. Als we skip(3) . toevoegen , we eindigen met de laatste 3 documenten:

db.artists.find( { albums: { $exists: false }} ).skip(3)

Resultaat:

{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" : "Bastille" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname" : "Gang of Four" }

  1. Hoe kan ik het formaat van een mongodb-capped collectie wijzigen zonder gegevens te verliezen?

  2. Redis Sentinels met TLS

  3. MongoDb-somquery

  4. Redis:om een ​​time-out in te stellen voor een sleutelwaardepaar in Set