Cómo obtener el valor mínimo en pyMongo

8

Tengo una colección con varios campos, y me gustaría obtener el valor mínimo de uno. Sé un comando para obtener el valor máximo:

collection.find_one(sort=[("myfield", -1)])["myfield"]

pero no uno para obtener el min. ¿Hay alguna forma de hacer esto?

Hatshepsut
fuente

Respuestas:

10

Puede invertir la dirección de clasificación para obtener el valor mínimo en lugar del máximo:

 # Sort by myfield (ascending value) and return first document
 collection.find_one(sort=[("myfield", 1)])["myfield"]

Este ejemplo supone que:

  • myfield es un valor numérico (por lo que el orden de clasificación tiene sentido para determinar un mínimo o un máximo)
  • myfieldexiste en el documento coincidente devuelto (de lo contrario, Python informará a KeyErrorcuando intente hacer referencia a un campo inexistente).
  • Todos los documentos de la colección tienen un myfieldvalor (los documentos que no tienen un myfieldvalor se ordenarán antes que los valores numéricos mínimos)

Para garantizar que su clasificación se base en documentos que realmente tienen un myfieldvalor que puede agregar $existsa los criterios de consulta:

 collection.find_one({"myfield": {"$exists": True}}, sort=[("myfield", 1)])["myfield"]

Para obtener más información sobre la clasificación, consulte:

Stennie
fuente