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

$topN (operador de expresión)

$topN

Nuevo en la versión 8.3.

Devuelve los n elementos principales de un arreglo según el orden de clasificación especificado. Si el arreglo contiene menos de n elementos, $topN devuelve todos los elementos del arreglo.

Nota

Otros usos de $topN

Esta página describe $topN cuando se utiliza como una expresión que opera sobre valores de matrices.

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

Cuando se utiliza como operador de expresión, $topN tiene la siguiente sintaxis:

{
$topN:
{
n: <expression>,
sortBy: <expression>,
input: <expression>
}
}
Campo
Necesidad
Descripción

n

Requerido

El número de elementos del arreglo a devolver.

sortBy

Requerido

Especifica el orden de los resultados. Consulte Comportamiento de ordenación para obtener más información sobre los valores sortBy.

entrada

Requerido

El arreglo que $topN evalúa.

  • $topN no filtra los valores nulos.

  • $topN convierte los valores faltantes en null.

MongoDB ordena el arreglo input en función del valor sortBy. La siguiente tabla proporciona ejemplos de diferentes opciones de clasificación:

input
sortBy
Ordenado input
[ 8, 3, 1, 10]

1

[1, 3, 8, 10]
[ 8, 3, 1, 10]

-1

[10, 8, 3, 1]
[
{ a: 1, b: 1 },
{ a: 2, b: 2 },
{ a: 2, b: 1 }
]

{ a: 1, b: 1 }

[
{ a: 1, b: 1 },
{ a: 2, b: 1 },
{ a: 2, b: 2 }
]

El campo input debe ser un array. Si especifica un input que no sea un array, MongoDB devolverá un error.

El siguiente ejemplo utiliza la colección movies del conjunto de datos de muestra sample_mflix. Para obtener más información sobre cómo cargar este conjunto de datos en su implementación, consulte Cargar el conjunto de datos de muestra.

La colección movies contiene documentos que se asemejan al siguiente ejemplo:

{
_id: ObjectId('573a1396f29313caabce4a9a'),
year: 1972,
genres: [ 'Crime', 'Drama' ],
title: 'The Godfather',
cast: [ 'Marlon Brando', 'Al Pacino', 'James Caan', 'Richard S. Castellano' ],
directors: [ 'Francis Ford Coppola' ],
runtime: 175,
...
}

La siguiente pipeline de agregación utiliza $topN en el arreglo cast:

db.movies.aggregate([
{
$match: { title: "The Godfather" }
},
{
$project: {
_id: 0,
title: 1,
firstThreeCastMembersAlphabetically: {
$topN: {
n: 3,
sortBy: 1,
input: "$cast"
}
}
}
}
])
[
{
title: 'The Godfather',
firstThreeCastMembersAlphabetically: [ 'Al Pacino', 'James Caan', 'Marlon Brando' ]
}
]

En este ejemplo, $topN ordena el arreglo existente cast en orden alfabético ascendente y retorna los primeros tres valores.