Definición
Nota
Otros usos de $maxN
Esta página describe $maxN cuando se usa como una expresión, que devuelve los valores n más grandes de una matriz.
También puedes usar $maxN en estos otros contextos:
$maxN (accumulator), que devuelve los valores máximos dendentro de un grupo.$maxN (window function), que se utiliza en la etapa$setWindowFieldspara devolver los valoresnmás grandes de los documentos en una ventana en particular.
Sintaxis
{ $maxN: { n: <expression>, input: <expression> } }
Campo | Tipo | Descripción |
|---|---|---|
| expresión | Especifica el número de elementos que se deben devolver. Debe ser un número entero positivo. |
| expresión | Especifica el array de entrada del que se devolverán los elementos |
Comportamiento
$maxNFiltra los valoresnull.Si el array
inputcontiene menos elementos quen,$maxNdevuelve todos los elementos del array.Si
inputse resuelve en un valor que no es una matriz, la operación devuelve un error.Si
inputcontiene elementos numéricos y de cadena, los elementos de cadena se ordenan antes que los elementos numéricos según el orden de comparación 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 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 $maxN para devolver los dos últimos miembros del reparto alfabéticamente para 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 } } ] )
La tubería precedente:
Utiliza
$matchpara filtrar tres películas específicas.Utiliza
$addFieldscon$maxNpara crear un nuevo campotopTwoCastque contiene los dos últimos valores alfabéticamente del arraycastconn: 2.Utiliza
$projectpara incluir solo los campostitle,castytopTwoCasten la salida.Utiliza
$sortpara ordenar los resultados por título.