MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB - Limiter les résultats d'une requête

Renvoyez uniquement le nombre de documents dont vous avez besoin avec le limit() méthode.

Dans MongoDB, vous pouvez utiliser le limit() méthode pour spécifier un nombre maximum de documents pour un curseur à retourner.

Lorsque vous interrogez une collection à l'aide de db.collection.find() méthode, vous pouvez ajouter limit() pour spécifier la limite.

Exemple

Faisons d'abord une requête sans une limite (afin que nous puissions voir combien de documents sont retournés) :

Sans limite

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

Résultat :

{ "_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" }

Avec une limite

OK, alors limitons les résultats à dire, 3 documents :

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

Résultat :

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

Dans notre requête, nous utilisons le $exists opérateur pour vérifier l'existence d'un champ. Dans ce cas, nous excluons les artistes qui ont un albums champ dans le document.

Cela pourrait facilement être remplacé par { $exists: true } pour n'inclure que les artistes avec un albums champ.

Ajouter le skip() Méthode

Vous pouvez utiliser le skip() méthode pour passer à un document à l'intérieur du curseur. En d'autres termes, vous pouvez contrôler où MongoDB commence à renvoyer les résultats.

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

Résultat :

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

Vous pouvez donc voir qu'il a ignoré le premier résultat, mais qu'il a tout de même renvoyé 3 documents.

Notez que skip() peut être utilisé sur n'importe quelle requête (pas seulement celles avec limit() ).

Par exemple, la requête en haut de cette page a renvoyé 6 documents. Si nous ajoutons skip(3) , on se retrouvera avec les 3 derniers documents :

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

Résultat :

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