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.