sql >> Databáze >  >> NoSQL >> MongoDB

Jak mohu zjistit, zda existuje více výsledků z dotazu v MongoDB?

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.




  1. Předat informace o typu do MongoDB, aby mohla správně deserializovat typy rozhraní?

  2. Jak zobrazím dotazy prováděné mým mongodb?

  3. Předávání parametrů modelu do modelu mongoose

  4. Mohu nastavit globální TTL v redis?