MongoDB har slutbara markörer , som låter dig återanvända en markör efter att all data har returnerats. Det skulle se ut ungefär så här:
n = 10
docs = db.documents.find({"foo": "bar"}).limit(n)
more = docs.hasNext()
Observera att det bara finns 10 dokument som hämtas, men markören kan inspekteras för att avgöra om det finns fler objekt tillgängliga. Det enda problemet är att anpassningsbara markörer endast kan användas på samlingar med tak.
Ovanstående kan också användas med en vanlig markör, men du måste fråga efter n + 1
dokument. Detta är i princip samma lösning som du använder nu. Du måste använda size()
dock, eftersom det tar hänsyn till överhoppnings- och begränsningsmodifierarna.
n = 10
docs = db.documents.find({"foo": "bar"}).limit(n + 1)
more = db.size() > n
Jag är inte bekant med PyMongo, så jag vet inte det här med säkerhet, men det finns en möjlighet att den här lösningen skickar n + 1
fullständiga dokument till din ansökan, snarare än det obligatoriska n
, vilket resulterar i mindre bandbreddsoverhead. Om så är fallet kanske du vill skapa en funktion på serversidan som gör detsamma, men som bara returnerar ett objekt som innehåller n
dokument i en array och en flagga som indikerar om en n + 1
dokumentet är tillgängligt.