So erhalten Sie den Mindestwert in pyMongo

8

Ich habe eine Sammlung mit mehreren Feldern und möchte den Mindestwert von einem erhalten. Ich kenne einen Befehl zum Abrufen des Maximalwerts:

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

aber nicht einer, um die min zu bekommen. Gibt es eine Möglichkeit, dies zu tun?

Hatschepsut
quelle

Antworten:

10

Sie können die Sortierrichtung umkehren, um den minimalen statt den maximalen Wert zu erhalten:

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

In diesem Beispiel wird Folgendes angenommen:

  • myfield ist ein numerischer Wert (daher ist die Sortierreihenfolge sinnvoll, um ein Minimum oder Maximum zu bestimmen).
  • myfieldist in dem zurückgegebenen übereinstimmenden Dokument vorhanden (andernfalls meldet Python a, KeyErrorwenn versucht wird, auf ein nicht vorhandenes Feld zu verweisen).
  • Alle Dokumente in der Sammlung haben einen myfieldWert (Dokumente, die keinen myfieldWert haben, werden vor den numerischen Mindestwerten sortiert).

Um sicherzustellen, dass Ihre Sortierung auf Dokumenten basiert, die tatsächlich einen myfieldWert haben, können Sie $existsdie Abfragekriterien hinzufügen :

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

Weitere Informationen zum Sortieren finden Sie unter:

Stennie
quelle