Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
$min
Der $min Aggregationsoperator gibt den Mindestwert eines angegebenen Felds in einer Reihe von Dokumenten zurück. Dieser Operator ist nützlich, um den niedrigsten Wert in einer Reihe von Dokumenten zu finden.
Parameter
-
expression: Der auszuwertende Ausdruck. Dies kann ein Feldpfad, eine Variable oder ein beliebiger Ausdruck sein, der in einen Wert aufgelöst wird.
Beispiel (MongoDB Shell)
Das folgende Beispiel zeigt die Verwendung des $min Operators, um den Mindestwert des age Felds in mehreren Dokumenten zu ermitteln.
Erstellen Sie Beispieldokumente
db.users.insertMany([ { name: "John", age: 35 }, { name: "Jane", age: 28 }, { name: "Bob", age: 42 }, { name: "Alice", age: 31 } ]);
Beispiel für eine Abfrage
db.users.aggregate([ { $group: { _id: null, minAge: { $min: "$age" } } }, { $project: { _id: 0, minAge: 1 } } ])
Ausgabe
[ { minAge: 28 } ]
Beispiel für die Verwendung von Fensteroperatoren (MongoDB Shell)
Neu ab Version 8.0.2.
Der $min Operator kann auch als Fensterbediener auf der $setWindowFields Bühne verwendet werden. In diesem Zusammenhang gibt es den Mindestwert für die Dokumente in jedem Fenster zurück. Sie geben den Operator unter dem output Feld an und definieren optional die Fenstergrenzen mit einem window Dokument.
Anmerkung
Bei Verwendung als Fensteroperator in $setWindowFields $min ist er auf 100 MB an Zwischendaten begrenzt. Eine Operation, die dieses Limit überschreitet, gibt einen Fehler zurück.
Erstellen Sie Beispieldokumente
db.stockPrices.insertMany([ { _id: 1, ticker: "ABC", hour: 1, price: 50 }, { _id: 2, ticker: "ABC", hour: 2, price: 45 }, { _id: 3, ticker: "ABC", hour: 3, price: 60 }, { _id: 4, ticker: "ABC", hour: 4, price: 40 }, { _id: 5, ticker: "XYZ", hour: 1, price: 30 }, { _id: 6, ticker: "XYZ", hour: 2, price: 35 }, { _id: 7, ticker: "XYZ", hour: 3, price: 25 } ]);
Beispiel für eine Abfrage
Das folgende Beispiel partitioniert die Dokumente nachticker, sortiert jede Partition nach und gibt den niedrigsten Preis zurückhour, der vom Anfang der Partition bis zum aktuellen Dokument angezeigt wurde.
db.stockPrices.aggregate([ { $setWindowFields: { partitionBy: "$ticker", sortBy: { hour: 1 }, output: { lowestSoFar: { $min: "$price", window: { documents: ["unbounded", "current"] } } } } } ]);
Ausgabe
[
{ "_id": 1, "ticker": "ABC", "hour": 1, "price": 50, "lowestSoFar": 50 },
{ "_id": 2, "ticker": "ABC", "hour": 2, "price": 45, "lowestSoFar": 45 },
{ "_id": 3, "ticker": "ABC", "hour": 3, "price": 60, "lowestSoFar": 45 },
{ "_id": 4, "ticker": "ABC", "hour": 4, "price": 40, "lowestSoFar": 40 },
{ "_id": 5, "ticker": "XYZ", "hour": 1, "price": 30, "lowestSoFar": 30 },
{ "_id": 6, "ticker": "XYZ", "hour": 2, "price": 35, "lowestSoFar": 30 },
{ "_id": 7, "ticker": "XYZ", "hour": 3, "price": 25, "lowestSoFar": 25 }
]
Jedes Dokument wird um das aktuelle Dokument erweitertlowestSoFar, wobei das aktuelle Minimum price innerhalb seiner Partition bis einschließlich des aktuellen Dokuments liegt.
Codebeispiele
Um ein Codebeispiel für die Verwendung des $min Operators anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten. Die folgenden Beispiele zeigen sowohl die Verwendung des Akkumulators (in$group) als auch die Verwendung von Fensteroperatoren (in$setWindowFields):