Ho una raccolta con diversi campi e vorrei ottenere il valore minimo da uno. Conosco un comando per ottenere il valore massimo:
collection.find_one(sort=[("myfield", -1)])["myfield"]
ma non uno per ottenere il minimo. C'è un modo per fare questo?
Ho una raccolta con diversi campi e vorrei ottenere il valore minimo da uno. Conosco un comando per ottenere il valore massimo:
collection.find_one(sort=[("myfield", -1)])["myfield"]
ma non uno per ottenere il minimo. C'è un modo per fare questo?
Risposte:
È possibile invertire la direzione di ordinamento per ottenere il valore minimo anziché il valore massimo:
# Sort by myfield (ascending value) and return first document
collection.find_one(sort=[("myfield", 1)])["myfield"]
Questo esempio presuppone che:
myfield è un valore numerico (quindi l'ordinamento ha senso determinare un minimo o un massimo)myfieldesiste nel documento corrispondente restituito (altrimenti Python riporterà a KeyErrorquando tenta di fare riferimento a un campo inesistente).myfieldvalore (i documenti che non hanno un myfieldvalore verranno ordinati prima dei valori numerici minimi)Per assicurarti che il tuo ordinamento sia basato su documenti che hanno effettivamente un myfieldvalore, puoi aggiungere $existsai criteri della query:
collection.find_one({"myfield": {"$exists": True}}, sort=[("myfield", 1)])["myfield"]
Per ulteriori informazioni sull'ordinamento, consultare: