Devo verificare se un'istruzione find
restituisce una query non vuota.Come verificare se un cursore pymongo presenta risultati di query
Quello che stavo facendo era il seguente:
query = collection.find({"string": field})
if not query: #do something
poi ho capito che la mia if
dichiarazione è stata mai eseguita perché find
restituisce un cursore, o la query è vuota o non.
Quindi ho controllato i documentation e trovo due metodi che mi può aiutare:
count(with_limit_and_skip=False)
che (dalla descrizione):Restituisce il numero di documenti nei risultati fissati per questa domanda
Mi sembra un buon modo per controllare, ma questo significa che ho bisogno di contare tutti i risultati di cursore sapere se è pari a zero o no, giusto? Un po 'costoso?
retrieved
che (dalla descrizione):Il numero di documenti recuperati finora.
ho testato su un insieme di query vuota e restituisce zero, ma non è chiaro ciò che fa e non so se è giusto per me.
Quindi, che è il modo migliore (best practice) per verificare se una query find()
restituisce un insieme vuoto o no? Uno dei metodi sopra descritti è adatto a questo scopo? E per quanto riguarda le prestazioni? Ci sono altri modi per farlo?
Giusto per essere chiari: ho bisogno di sapere se la query è vuota e mi piacerebbe trovare il modo migliore con il cursore per quanto riguarda le prestazioni e di essere divinatorio.
Questo dipende da ciò che si vuole fare con esso –
@VincentBeltman ho solo bisogno per sapere se la query restituisce qualcosa usando quel cursore. – boh
Stai già eseguendo la query nel metodo collection.find() in ogni caso. Il metodo "count" sta solo restituendo il numero di documenti che il metodo find ha restituito al cursore. Dovresti semplicemente "se query.count> 0:" – vintastic