sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB - Begræns resultaterne af en forespørgsel

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

  1. Multipel brug af positionsoperatoren `$` til at opdatere indlejrede arrays

  2. Tjek, om hvert element i arrayet matcher tilstanden

  3. Sortering på Flere felter mongo DB

  4. Proaktiv MongoDB-overvågning (udviklerstudie/rådgivervinkel)