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.
Docs Menu

$maxN (función de ventana)

$maxN

Devuelve una matriz que contiene el máximo de elementos n dentro de una ventana.

Nota

Otros usos de $maxN

Esta página describe $maxN cuando se utiliza como función de ventana.

También puedes usar $maxN en estos otros contextos:

{
$setWindowFields: {
...
output: {
<field>: {
$maxN: {
input: <expression>,
n: <expression>
},
window: {
documents: [ <lower boundary>, <upper boundary> ]
}
}
}
}
}
Campo
Tipo
Descripción

input

expresión

La expresión se evalúa sobre cada documento en la ventana. $maxN devuelve los valores máximos de n.

n

expresión

El número de elementos que $maxN devuelve desde la ventana. Debe ser un número entero positivo.

Si la ventana contiene menos de n elementos, $maxN devuelve todos los elementos de la ventana.

$maxN filtra los valores nulos y ausentes.

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 $maxN en $setWindowFields para devolver las tres películas mejor valoradas de cada año. La ventana abarca toda la partición, por lo que cada documento del mismo año recibe el mismo valor topThreeRatedInYear.

db.movies.aggregate( [
{
$match: {
year: { $in: [ 1999, 2001 ] },
"imdb.rating": { $gte: 8.5 }
}
},
{
$setWindowFields: {
partitionBy: "$year",
sortBy: { "imdb.rating": -1 },
output: {
topThreeRatedInYear: {
$maxN: {
input: [ "$imdb.rating", "$title" ],
n: 3
},
window: {
documents: [ "unbounded", "unbounded" ]
}
}
}
}
},
{
$project: {
_id: 0,
title: 1,
year: 1,
"imdb.rating": 1,
topThreeRatedInYear: 1
}
},
{
$sort: { year: 1, "imdb.rating": -1 }
}
] )

La tubería precedente:

  • Utiliza $match para filtrar películas estrenadas en 1999 o 2001 con una calificación IMDb de 8.5 o superior.

  • Utiliza $setWindowFields para particionar las películas por year y ordenarlas por imdb.rating en orden descendente. La etapa utiliza $maxN con n: 3 para crear topThreeRatedInYear a partir de una ventana que abarca toda la partición (documents: ["unbounded", "unbounded"]).

  • Utiliza $project para incluir solo los campos title, year, imdb.rating y topThreeRatedInYear en la salida.

  • Utiliza $sort para ordenar los resultados por año ascendente y calificación descendente.