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 distintos 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 en un grupo de documentos de entrada.
También puede usar $max en estos otros contextos:
$max (expression), que devuelve el valor máximo de un arreglo o una lista de valores.$max (window function), que se utiliza en la etapa$setWindowFieldspara devolver el valor máximo de documentos en una ventana determinada.
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 ausentes.
Si **todos** los valores de entrada para $max son null o faltan, $max nulldevuelve.
Arreglo Operand
En la etapa $group, si la expresión se resuelve en un arreglo, $max no recorre el arreglo y compara el arreglo como un todo.
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 la implementación autogestionada de MongoDB, consultar Cargar el conjunto de datos de muestra. Si realizó alguna modificación en las bases de datos de muestra, es posible que deba descartar y volver a crear las bases de datos 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 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 } } ] )
El pipeline anterior:
Utiliza
$matchpara usar un filtro para películas con una calificación común de EE. UU., una calificació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 IMDb más alta y la duración más larga para cada gruporated.Ordena la salida alfabéticamente por categoría de calificación.