MongoDB a curseurs ajustables , qui vous permettent de réutiliser un curseur une fois que toutes les données ont été renvoyées. Cela ressemblerait à ceci :
n = 10
docs = db.documents.find({"foo": "bar"}).limit(n)
more = docs.hasNext()
Notez qu'il n'y a que 10 documents récupérés, mais le curseur peut être inspecté pour déterminer s'il y a plus d'objets disponibles. Le seul problème est que les curseurs de queue ne peuvent être utilisés que sur des collections limitées.
Ce qui précède peut également être utilisé avec un curseur normal, mais vous devrez interroger n + 1
documents. Il s'agit essentiellement de la même solution que celle que vous utilisez actuellement. Vous devez utiliser size()
cependant, car cela prend en compte les modificateurs de saut et de limite.
n = 10
docs = db.documents.find({"foo": "bar"}).limit(n + 1)
more = db.size() > n
Je ne connais pas PyMongo, donc je ne le sais pas avec certitude, mais il est possible que cette solution envoie n + 1
documents complets à votre demande, plutôt que le n
requis , entraînant une surcharge de bande passante mineure. Si tel est le cas, vous pouvez créer une fonction côté serveur qui fait la même chose, mais ne renvoie qu'un objet contenant n
documents dans un tableau, et un drapeau qui indique si un n + 1
document est disponible.