2012-08-16 6 views
6

Was bedeutet ein negativer Wert für limit Operator?MongoDB "Limit" Operator negativen Wert

http://www.mongodb.org/display/DOCS/Aggregation+Framework+-+ $ limit

http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%7B%7Blimit%28%29%7D%7D

Mongo liefert exakt das gleiche Dokument, wenn ich limit(1) oder limit(-1) tun ??

+0

Es klingt für mich wie Mongo ist der absolute Wert der Grenze nehmen Sie eingeben. Was gut ist, weil eine negative Grenze keinen Sinn ergibt. –

+0

mögliches Duplikat von [In einer MongoDB-Abfrage, was bedeutet ein negatives Limit?] (Http://stackoverflow.com/questions/9833941/in-a-mongodb-query-what-does-a_negative-limit-mean) –

Antwort

14

Wenn die Grenzwertnummer negativ ist, gibt die Datenbank im Allgemeinen die Anzahl der Ergebnisse zurück und schließt den Cursor - es wird im Wesentlichen ein einzelner Stapel von Ergebnissen zurückgegeben und es können keine weiteren Ergebnisse für diese Abfrage abgerufen werden.

Wenn der negative Grenzwert den batch size (insbesondere die maximale Batchgröße) überschreitet, wird der Batch zurückgegeben und der Cursor geschlossen, ob das Limit erreicht wurde oder nicht. Daher übertrumpft die einzelne Stapelregel das angegebene Limit, wenn das Limit zu hoch ist.

Wenn das Limit positiv ist, können Sie den Cursor offen lassen, um weitere Ergebnisse zu erhalten, und weiter iterieren, bis der Cursor erschöpft ist.

Weitere Informationen über Chargen und Cursor, werfen Sie einen Blick hier:

http://docs.mongodb.org/manual/core/cursors/#cursor-batches http://docs.mongodb.org/manual/reference/method/cursor.limit/#negative-values

+1

Danke, also ist eine Option effizienter als die andere? – kapso

+2

Wenn Sie genau diese Anzahl von Ergebnissen abrufen, ist Ihr Limit größer als 1, und Sie sind unter der Stapelgröße (glaube, der Standardwert ist 101, aber einstellbar - siehe den Link in meiner Antwort und dem Stapel), dann negative Grenze kann von Vorteil sein. Sonst könnte es Probleme mit der Verwendung eines negativen Limits geben - die wahre Art zu sagen, wie immer, ist es, mit Ihrem Datensatz zu testen. –

Verwandte Themen