Definición
Devuelve el valor máximo de los documentos en una ventana determinada.
Nota
Desambiguación
Esta página describe $max cuando se utiliza como función de ventana.
También puedes usar $max en estos otros contextos:
$max (accumulator), que devuelve el valor máximo en un grupo de documentos de entrada.$max (expression), que devuelve el valor máximo de una matriz o una lista de valores.
Sintaxis
{ $setWindowFields: { ... output: { <field>: { $max: <expression> } } } }
Comportamiento
Tipo de resultado
$max compara los datos de entrada siguiendo el orden de comparación BSON para determinar el tipo de resultado adecuado. Cuando los datos de entrada contienen múltiples tipos de datos, el tipo de salida $max es el más alto en el orden de comparación.
Valores nulos y faltantes
Si algunos, pero no todos, los documentos de la ventana tienen un valor null para el campo o les falta el campo, $min los ignora. Solo considera los valores que no son nulos ni faltan.
Si todos los documentos de la ventana tienen un valor null para el campo o les falta el campo, $min devuelve null.
Arreglo Operand
En la etapa $setWindowFields, si la expresión se resuelve en una matriz, $max no recorre la matriz y compara la matriz en su conjunto.
Ejemplo
Los ejemplos de esta página utilizan datos del conjunto de datos sample_mflix. Para obtener más información sobre cómo cargar este conjunto de datos en su implementación autogestionada de MongoDB, consulte Cargar el conjunto de datos de ejemplo. Si realizó alguna modificación en las bases de datos de ejemplo, es posible que deba eliminarlas y volver a crearlas para ejecutar los ejemplos de esta página.
Este ejemplo utiliza $max en la etapa $setWindowFields para generar la calificación IMDb más alta para las películas mejor valoradas en 1999 y 2000. Para cada película, la canalización agrega un campo que contiene la calificación IMDb más alta de todas las películas de ese año:
db.movies.aggregate( [ { $match: { year: { $in: [ 1999, 2000 ] }, "imdb.rating": { $gte: 8.5 } } }, { $setWindowFields: { partitionBy: "$year", sortBy: { "imdb.rating": 1 }, output: { highestRatingInYear: { $max: "$imdb.rating", window: { documents: [ "unbounded", "unbounded" ] } } } } }, { $project: { _id: 0, title: 1, year: 1, "imdb.rating": 1, highestRatingInYear: 1 } }, { $sort: { year: 1, "imdb.rating": 1 } } ] )
En el pipeline anterior:
$matchFiltros para películas de 1999 y 2000 con una calificación IMDb de 8.5 o superior.$setWindowFieldsdivide las películas poryeary las ordena porimdb.ratingen orden ascendente dentro de cada partición. La función de ventana$maxutiliza una ventana de documentos con límites inferior y superiorunbounded, que abarca toda la partición.$maxdevuelve elimdb.ratingmás alto de todos los documentos en la partición de cada año.$projectlimita la salida atitle,year,imdb.ratingy el campo calculadohighestRatingInYear.$sortLos resultados se ordenan por año y luego por calificación de IMDb en orden ascendente.