Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs Menu

$max (función de ventana)

$max

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.

{
$setWindowFields: {
...
output: {
<field>: {
$max: <expression>
}
}
}
}

$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.

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.

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.

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:

  • $match Filtros para películas de 1999 y 2000 con una calificación IMDb de 8.5 o superior.

  • $setWindowFields divide las películas por year y las ordena por imdb.rating en orden ascendente dentro de cada partición. La función de ventana $max utiliza una ventana de documentos con límites inferior y superior unbounded, que abarca toda la partición. $max devuelve el imdb.rating más alto de todos los documentos en la partición de cada año.

  • $project limita la salida a title, year, imdb.rating y el campo calculado highestRatingInYear.

  • $sort Los resultados se ordenan por año y luego por calificación de IMDb en orden ascendente.

Califique esta página