MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB - Begrenzen Sie die Ergebnisse einer Abfrage

Geben Sie mit limit() nur die Anzahl der benötigten Dokumente zurück Methode.

In MongoDB können Sie das limit() verwenden Methode, um eine maximale Anzahl von Dokumenten anzugeben, die ein Cursor zurückgeben soll.

Wenn Sie eine Sammlung mit db.collection.find() abfragen -Methode können Sie limit() anhängen um das Limit festzulegen.

Beispiel

Lassen Sie uns zuerst eine Abfrage ohne durchführen ein Limit (damit wir sehen können, wie viele Dokumente zurückgegeben werden):

Ohne Grenzen

db.artists.find( { albums: { $exists: false }} )

Ergebnis:

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

Mit einer Grenze

OK, also beschränken wir die Ergebnisse auf 3 Dokumente:

db.artists.find( { albums: { $exists: false }} ).limit(3)

Ergebnis:

{ "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" }
{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }
{ "_id" : 1, "artistname" : "AC/DC" }

In unserer Abfrage verwenden wir den $exists Operator, um zu prüfen, ob ein Feld vorhanden ist. In diesem Fall schließen wir diejenigen Künstler aus, die ein Album haben Feld im Dokument.

Dies könnte leicht auf { $exists: true } umgestellt werden um nur die Künstler mit einem Album einzuschließen Feld.

Fügen Sie skip() hinzu Methode

Sie können das skip() verwenden Methode, um zu einem Dokument innerhalb des Cursors zu springen. Mit anderen Worten, Sie können steuern, wo MongoDB mit der Rückgabe der Ergebnisse beginnt.

db.artists.find( { albums: { $exists: false }} ).limit(3).skip(1)

Ergebnis:

{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }
{ "_id" : 1, "artistname" : "AC/DC" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" }

Sie können also sehen, dass das erste Ergebnis übersprungen wurde, aber immer noch 3 Dokumente zurückgegeben wurden.

Beachten Sie, dass skip() kann für jede Abfrage verwendet werden (nicht nur für solche mit limit()). ).

Beispielsweise hat die Abfrage oben auf dieser Seite 6 Dokumente zurückgegeben. Wenn wir skip(3) hinzufügen , werden wir mit den letzten 3 Dokumenten enden:

db.artists.find( { albums: { $exists: false }} ).skip(3)

Ergebnis:

{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" : "Bastille" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname" : "Gang of Four" }