Zwróć tylko liczbę potrzebnych dokumentów za pomocą limit()
metoda.
W MongoDB możesz użyć limit()
metoda, aby określić maksymalną liczbę dokumentów do zwrócenia przez kursor.
Gdy wysyłasz zapytanie do kolekcji za pomocą db.collection.find()
metody, możesz dołączyć limit()
aby określić limit.
Przykład
Najpierw zróbmy zapytanie bez limit (abyśmy mogli zobaczyć, ile dokumentów zostało zwróconych):
Bez limitu
db.artists.find( { albums: { $exists: false }} )
Wynik:
{ "_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" }
Z limitem
OK, więc ograniczmy wyniki do trzech dokumentów:
db.artists.find( { albums: { $exists: false }} ).limit(3)
Wynik:
{ "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" } { "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" } { "_id" : 1, "artistname" : "AC/DC" }
W naszym zapytaniu używamy $exists
operatora, aby sprawdzić istnienie pola. W tym przypadku wykluczamy artystów, którzy mają
albumy
pole w dokumencie.
Można to łatwo zmienić na { $exists: true }
aby uwzględnić tylko tych wykonawców z
albumami
pole.
Dodaj skip()
Metoda
Możesz użyć skip()
metoda, aby przejść do dokumentu w obrębie kursora. Innymi słowy, możesz kontrolować, gdzie MongoDB zaczyna zwracać wyniki.
db.artists.find( { albums: { $exists: false }} ).limit(3).skip(1)
Wynik:
{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" } { "_id" : 1, "artistname" : "AC/DC" } { "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" }
Widać więc, że pominął pierwszy wynik, ale nadal zwrócił 3 dokumenty.
Zauważ, że skip()
może być użyty w dowolnym zapytaniu (nie tylko z limit()
).
Na przykład zapytanie u góry tej strony zwróciło 6 dokumentów. Jeśli dodamy skip(3)
, otrzymamy ostatnie 3 dokumenty:
db.artists.find( { albums: { $exists: false }} ).skip(3)
Wynik:
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" } { "_id" : ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" : "Bastille" } { "_id" : ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname" : "Gang of Four" }