Върнете само необходимия брой документи с limit()
метод.
В MongoDB можете да използвате limit()
метод, за да посочите максимален брой документи, които курсорът да върне.
Когато правите заявка за колекция с помощта на db.collection.find()
метод, можете да добавите limit()
за да посочите лимита.
Пример
Първо нека направим заявка без ограничение (за да можем да видим колко документа са върнати):
Без лимит
db.artists.find( { albums: { $exists: false }} )
Резултат:
{ "_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" }
С лимит
Добре, нека ограничим резултатите, за да кажем 3 документа:
db.artists.find( { albums: { $exists: false }} ).limit(3)
Резултат:
{ "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" } { "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" } { "_id" : 1, "artistname" : "AC/DC" }
В нашата заявка използваме $exists
оператор за проверка за съществуването на поле. В този случай изключваме онези изпълнители, които имат
албуми
поле в документа.
Това може лесно да се превключи на { $exists: true }
за да включите само тези изпълнители с
албуми
поле.
Добавете skip()
Метод
Можете да използвате skip()
метод за прескачане на документ в курсора. С други думи, можете да контролирате къде MongoDB започва да връща резултатите.
db.artists.find( { albums: { $exists: false }} ).limit(3).skip(1)
Резултат:
{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" } { "_id" : 1, "artistname" : "AC/DC" } { "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" }
Така че можете да видите, че е пропуснал първия резултат, но все пак е върнал 3 документа.
Обърнете внимание, че skip()
може да се използва за всяка заявка (не само за тези с limit()
).
Например, заявката в горната част на тази страница върна 6 документа. Ако добавим skip(3)
, ще завършим с последните 3 документа:
db.artists.find( { albums: { $exists: false }} ).skip(3)
Резултат:
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" } { "_id" : ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" : "Bastille" } { "_id" : ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname" : "Gang of Four" }