MongoDB má tabulkové kurzory , které umožňují znovu použít kurzor po vrácení všech dat. Vypadalo by to nějak takto:
n = 10
docs = db.documents.find({"foo": "bar"}).limit(n)
more = docs.hasNext()
Všimněte si, že je načteno pouze 10 dokumentů, ale kurzor lze zkontrolovat a určit, zda je k dispozici více objektů. Jediným problémem je, že tabulkové kurzory lze použít pouze na omezených kolekcích.
Výše uvedené lze také použít s běžným kurzorem, ale budete muset zadat dotaz na n + 1
dokumenty. Toto je v podstatě stejné řešení, jaké používáte nyní. Musíte použít size()
ačkoli to bere v úvahu modifikátory skip a limit.
n = 10
docs = db.documents.find({"foo": "bar"}).limit(n + 1)
more = db.size() > n
Nejsem obeznámen s PyMongem, takže to nevím jistě, ale existuje možnost, že toto řešení posílá n + 1
úplné dokumenty k vaší aplikaci, nikoli požadované n
, což vede k menší režii šířky pásma. Pokud je to tak, možná budete chtít vytvořit funkci na straně serveru, která udělá totéž, ale vrátí pouze objekt obsahující n
dokumenty v poli a příznak, který označuje, zda n + 1
dokument je k dispozici.