MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come posso sapere se ci sono più risultati da una query in MongoDB?

MongoDB ha cursori di coda , che consentono di riutilizzare un cursore dopo che tutti i dati sono stati restituiti. Sembrerebbe qualcosa del genere:

n = 10
docs = db.documents.find({"foo": "bar"}).limit(n)
more = docs.hasNext()

Si noti che sono stati recuperati solo 10 documenti, ma è possibile ispezionare il cursore per determinare se sono disponibili più oggetti. L'unico problema è che i cursori a coda possono essere utilizzati solo su raccolte limitate.

Quanto sopra può essere utilizzato anche con un cursore normale, ma dovresti eseguire una query per n + 1 documenti. Questa è fondamentalmente la stessa soluzione che stai usando ora. Devi usare size() tuttavia, poiché ciò tiene conto dei modificatori di skip e limit.

n = 10
docs = db.documents.find({"foo": "bar"}).limit(n + 1)
more = db.size() > n

Non ho familiarità con PyMongo, quindi non lo so per certo, ma c'è la possibilità che questa soluzione invii n + 1 documenti completi alla tua domanda, anziché il n richiesto , con conseguente sovraccarico di larghezza di banda minore. In tal caso, potresti voler creare una funzione lato server che faccia lo stesso, ma restituisca solo un oggetto contenente n documenti in un array e un flag che indica se un n + 1 il documento è disponibile.