Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
$min
L'opérateur d'$minagrégation renvoie la valeur minimale d'un champ spécifié pour un ensemble de documents. Cet opérateur est utile pour trouver la valeur la plus faible dans un ensemble de documents.
Paramètres
-
expression: Expression à évaluer. Il peut s'agir d'un chemin de champ, d'une variable ou de toute expression qui se résout en une valeur.
Exemple (MongoDB Shell)
L'exemple suivant illustre l'utilisation de l'$minopérateur pour trouver la valeur minimale du age champ dans plusieurs documents.
Créez des exemples de documents
db.users.insertMany([ { name: "John", age: 35 }, { name: "Jane", age: 28 }, { name: "Bob", age: 42 }, { name: "Alice", age: 31 } ]);
Exemple de requête
db.users.aggregate([ { $group: { _id: null, minAge: { $min: "$age" } } }, { $project: { _id: 0, minAge: 1 } } ])
Sortie
[ { minAge: 28 } ]
Exemple d'utilisation d'un opérateur de fenêtre (MongoDB Shell)
Nouveau depuis la version 8.0.2.
L'$minopérateur peut également être utilisé comme opérateur de fenêtre dans la $setWindowFields scène. Dans ce contexte, il renvoie la valeur minimale pour les documents de chaque fenêtre. Vous spécifiez l'opérateur dans le output champ et définissez éventuellement les limites de la fenêtre à l'aide d'un window document.
Note
Lorsqu'il est utilisé comme opérateur de fenêtre dans$setWindowFields, $min est limité à 100 Mo de données intermédiaires. Une opération dépassant cette limite renvoie une erreur.
Créez des exemples de documents
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 } ]);
Exemple de requête
L'exemple suivant partitionne les documents particker, trie chaque partition par hour et renvoie le prix le plus bas depuis le début de la partition jusqu'au document actuel.
db.stockPrices.aggregate([ { $setWindowFields: { partitionBy: "$ticker", sortBy: { hour: 1 }, output: { lowestSoFar: { $min: "$price", window: { documents: ["unbounded", "current"] } } } } } ]);
Sortie
[
{ "_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 }
]
Chaque document est augmenté avec lowestSoFar le minimum de temps disponible price dans sa partition, y compris le document actuel.
Exemples de code
Pour afficher un exemple de code d'utilisation de l'$minopérateur, choisissez l'onglet correspondant à la langue que vous souhaitez utiliser. Les exemples suivants montrent à la fois l'utilisation de l'accumulateur (in$group) et l'utilisation de l'opérateur de fenêtre (in$setWindowFields) :