Definición
Devuelve el valor máximo de un array.
Nota
Desambiguación
Esta página describe $max cuando se usa como una expresión, que devuelve el valor máximo de una matriz o una lista de valores.
También puedes usar $max en estos otros contextos:
$max (accumulator), que devuelve un único valor agregado basado en un número variable de documentos de entrada.$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> }
El expression debe evaluarse como un array.
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
Con una sola expresión como operando, si la expresión se resuelve en una matriz, $max recorre la matriz para encontrar el valor máximo.
Con una lista de expresiones como operando, si alguna expresión se resuelve en una matriz, $max no recorre esa matriz y en su lugar 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.
El siguiente ejemplo utiliza $max en la etapa $project para encontrar la calificación más alta para cada película en tres fuentes de calificación: IMDb, Rotten Tomatoes viewer y Rotten Tomatoes critic:
db.movies.aggregate( [ { $match: { title: { $in: [ "The Godfather", "Schindler's List", "The Dark Knight" ] }, "imdb.rating": { $gt: 0 }, "tomatoes.viewer.rating": { $gt: 0 }, "tomatoes.critic.rating": { $gt: 0 } } }, { $project: { _id: 0, title: 1, highestRating: { $max: [ "$imdb.rating", "$tomatoes.viewer.rating", "$tomatoes.critic.rating" ] } } }, { $sort: { title: 1 } } ] )
La tubería precedente:
Utiliza
$matchpara filtrar tres películas específicas que tengan calificaciones válidas de las tres fuentes.Utiliza
$projectcon$maxy una lista de expresiones para calcular la calificación más alta entreimdb.rating,tomatoes.viewer.ratingytomatoes.critic.ratingpara cada película.Ordena la salida alfabéticamente por título.