Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
$min
El operador de $min agregación devuelve el valor mínimo de un campo especificado en un conjunto de documentos. Este operador es útil para buscar el valor más bajo en un conjunto de documentos.
Parámetros
-
expression: La expresión que se va a evaluar. Puede ser una ruta de campo, una variable o cualquier expresión que dé como resultado un valor.
Ejemplo (MongoDB Shell)
El siguiente ejemplo demuestra el uso del $min operador para encontrar el valor mínimo del age campo en varios documentos.
Cree documentos de muestra
db.users.insertMany([ { name: "John", age: 35 }, { name: "Jane", age: 28 }, { name: "Bob", age: 42 }, { name: "Alice", age: 31 } ]);
Ejemplo de consulta
db.users.aggregate([ { $group: { _id: null, minAge: { $min: "$age" } } }, { $project: { _id: 0, minAge: 1 } } ])
Salida
[ { minAge: 28 } ]
Ejemplo de uso de un operador de ventana (MongoDB Shell)
Nuevo a partir de la versión 8.0.2.
El $min operador también se puede utilizar como operador de ventanas en el $setWindowFields escenario. En este contexto, devuelve el valor mínimo de los documentos de cada ventana. Especifique el operador en el output campo y, si lo desea, defina los límites de la ventana con un window documento.
nota
Cuando se usa como operador de ventana en$setWindowFields, $min está limitado a 100 MB de datos intermedios. Una operación que supera este límite devuelve un error.
Crea documentos de muestra
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 } ]);
Ejemplo de consulta
En el ejemplo siguiente se dividen los documentosticker, se ordena cada partición y se devuelve el precio más bajo registrado desde el principio de la partición hasta el documento actual. hour
db.stockPrices.aggregate([ { $setWindowFields: { partitionBy: "$ticker", sortBy: { hour: 1 }, output: { lowestSoFar: { $min: "$price", window: { documents: ["unbounded", "current"] } } } } } ]);
Salida
[
{ "_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 }
]
Cada documento se amplía conlowestSoFar, como mínimo, el documento actual incluido price dentro de su partición.
Ejemplos de código
Para ver un ejemplo de código sobre el uso $min del operador, seleccione la pestaña correspondiente al idioma que desee utilizar. Los siguientes ejemplos muestran tanto el uso del acumulador (en$group) como el uso del operador de ventanas (en$setWindowFields):