Definición
Devuelve el valor máximo. $max compara tanto el valor como el tipo, utilizando el orden de comparación BSON especificado para valores de diferentes tipos.
El acumulador $max está disponible en estas etapas:
Nota
Desambiguación
Esta página describe $max cuando se utiliza como acumulador. Los acumuladores devuelven un único valor agregado, como la suma, el máximo o el mínimo, de un grupo de documentos de entrada.
También puedes usar $max en estos otros contextos:
$max (expression), que devuelve el valor máximo de una matriz o una lista de valores.$max (window function), que se utiliza en la etapa$setWindowFieldspara devolver el valor máximo de los documentos en una ventana en particular.
Sintaxis
{ $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 valores de entrada para $max son null o faltan, $max solo considera los valores no nulos y no faltantes.
Si todos los valores de entrada para $max son null o faltan, $max devuelve null.
Arreglo Operand
En la etapa $group, si la expresión se resuelve en una matriz, $max no recorre la matriz y compara la matriz en su conjunto.
Valores iguales
Si varios valores se comparan como iguales, $max puede devolver cualquiera de esos valores. No hay garantías de qué valor igual devuelve $max.
Por ejemplo, en una intercalación sin distinción entre mayúsculas y minúsculas, "a" y "A" pueden compararse como iguales. No hay garantías de cuál se devolverá.
Uso en la etapa $group
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.
El siguiente ejemplo utiliza $max en una etapa $group para encontrar la calificación IMDb más alta y la duración más larga para las películas en cada categoría de calificación:
db.movies.aggregate( [ { $match: { rated: { $in: [ "G", "PG", "PG-13", "R" ] }, "imdb.rating": { $gt: 0 }, runtime: { $gt: 0 } } }, { $sort: { rated: 1 } }, { $group: { _id: "$rated", maxImdbRating: { $max: "$imdb.rating" }, maxRuntime: { $max: "$runtime" } } }, { $sort: { _id: 1 } } ] )
La tubería precedente:
Utiliza
$matchpara filtrar películas con una clasificación común en EE. UU., una clasificación válida de IMDb y una duración conocida.Ordena los documentos por
ratedpara garantizar un orden de agrupación coherente.Utiliza
$groupcon$maxpara encontrar la calificación más alta de IMDb y la duración más larga para cada gruporated.Ordena los resultados alfabéticamente por categoría de calificación.