Definición
Nota
Otros usos de $maxN
Esta página describe $maxN cuando se utiliza como una expresión, que devuelve los n valores más grandes de un arreglo.
También puede usar $maxN en estos otros contextos:
$maxN (accumulator), que devuelve losnvalores máximos dentro de un grupo.$maxN (window function), que se utiliza en la$setWindowFieldsetapa para devolver losnvalores más grandes de los documentos en una ventana determinada.
Sintaxis
{ $maxN: { n: <expression>, input: <expression> } }
Campo | Tipo | Descripción |
|---|---|---|
| expresión | Especifica el número de elementos que se van a devolver. Debe ser un entero positivo. |
| expresión | Especifica el arreglo de entrada del que se devolverá un máximo de |
Comportamiento
$maxNfiltro los valoresnull.Si el arreglo
inputcontiene menos denelementos,$maxNdevuelve todos los elementos del arreglo.Si
inputse resuelve en un valor que no es un arreglo, la operación devuelve un error.Si
inputcontiene elementos numéricos y de string, los elementos de string se ordenan antes que los elementos numéricos según el orden de comparación de BSON.
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 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 $maxN para devolver los dos nodos de reparto alfabéticamente últimos de cada película, almacenados en un nuevo campo topTwoCast creado por $addFields.
db.movies.aggregate( [ { $match: { title: { $in: [ "The Godfather", "Spirited Away", "The Dark Knight" ] } } }, { $addFields: { topTwoCast: { $maxN: { n: 2, input: "$cast" } } } }, { $project: { _id: 0, title: 1, cast: 1, topTwoCast: 1 } }, { $sort: { title: 1 } } ] )
El pipeline anterior:
Utiliza
$matchcomo filtro para tres películas específicas.Utiliza
$addFieldscon$maxNpara crear un nuevo campotopTwoCastque contiene los dos valores alfabéticamente últimos del arreglocastconn: 2.Utiliza
$projectpara incluir solo los campostitle,casty eltopTwoCasten la salida.Utiliza
$sortpara ordenar los resultados por título.