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

Wie kann ich feststellen, ob es mehr Ergebnisse einer Abfrage in MongoDB gibt?

MongoDB hat anpassbare Cursor , mit denen Sie einen Cursor wiederverwenden können, nachdem alle Daten zurückgegeben wurden. Es würde in etwa so aussehen:

n = 10
docs = db.documents.find({"foo": "bar"}).limit(n)
more = docs.hasNext()

Beachten Sie, dass nur 10 Dokumente abgerufen werden, aber der Cursor kann überprüft werden, um festzustellen, ob weitere Objekte verfügbar sind. Das einzige Problem besteht darin, dass Tailable-Cursor nur für begrenzte Sammlungen verwendet werden können.

Das Obige kann auch mit einem normalen Cursor verwendet werden, aber Sie müssten nach n + 1 fragen Unterlagen. Dies ist im Grunde die gleiche Lösung, die Sie jetzt verwenden. Sie müssen size() verwenden allerdings, da dies die Skip- und Limit-Modifikatoren berücksichtigt.

n = 10
docs = db.documents.find({"foo": "bar"}).limit(n + 1)
more = db.size() > n

Ich bin mit PyMongo nicht vertraut, daher weiß ich das nicht genau, aber es besteht die Möglichkeit, dass diese Lösung n + 1 sendet vollständigen Unterlagen zu Ihrer Bewerbung, statt dem erforderlichen n , was zu einem geringen Bandbreiten-Overhead führt. Wenn dies der Fall ist, möchten Sie möglicherweise eine serverseitige Funktion erstellen, die dasselbe tut, aber nur ein Objekt zurückgibt, das n enthält Dokumente in einem Array und ein Flag, das angibt, ob ein n + 1 Dokument ist verfügbar.