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