Returner kun det antal dokumenter, du har brug for, med limit()
metode.
I MongoDB kan du bruge limit()
metode til at angive et maksimalt antal dokumenter, som en markør skal returnere.
Når du forespørger på en samling ved hjælp af db.collection.find()
metode, kan du tilføje limit()
for at angive grænsen.
Eksempel
Lad os først lave en forespørgsel uden en grænse (så vi kan se, hvor mange dokumenter der returneres):
Uden begrænsning
db.artists.find( { albums: { $exists: false }} )
Resultat:
{ "_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" }
Med en grænse
OK, så lad os begrænse resultaterne til at sige 3 dokumenter:
db.artists.find( { albums: { $exists: false }} ).limit(3)
Resultat:
{ "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" } { "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" } { "_id" : 1, "artistname" : "AC/DC" }
I vores forespørgsel bruger vi $exists
operatør for at kontrollere, om der findes et felt. I dette tilfælde ekskluderer vi de kunstnere, der har et
album
felt i dokumentet.
Dette kunne nemt ændres til { $exists: true }
for kun at inkludere de kunstnere med et
album
felt.
Tilføj skip()
Metode
Du kan bruge skip()
metode til at springe til et dokument inden for markøren. Med andre ord kan du kontrollere, hvor MongoDB begynder at returnere resultaterne.
db.artists.find( { albums: { $exists: false }} ).limit(3).skip(1)
Resultat:
{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" } { "_id" : 1, "artistname" : "AC/DC" } { "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" }
Så du kan se, at det sprang det første resultat over, men stadig returnerede 3 dokumenter.
Bemærk at skip()
kan bruges på enhver forespørgsel (ikke kun dem med limit()
).
Forespørgslen øverst på denne side returnerede f.eks. 6 dokumenter. Hvis vi tilføjer skip(3)
, vi ender med de sidste 3 dokumenter:
db.artists.find( { albums: { $exists: false }} ).skip(3)
Resultat:
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" } { "_id" : ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" : "Bastille" } { "_id" : ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname" : "Gang of Four" }