Come ottenere il valore minimo in pyMongo


8

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:


10

È 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).
  • tutti i documenti della raccolta hanno un 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:

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.