Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

$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

Desambiguación

Esta página describe el operador de expresión $topN. Para el $topN operador de acumulación, consulte $topN (operador de acumulación).

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. Consulta Comportamiento de ordenación para obtener más información sobre los valores de sortBy.

entrada

Requerido

El arreglo que $topN evalúa.

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 resolver en un arreglo. En caso de que especifiques un input que no sea un arreglo, MongoDB arrojará un error.

El siguiente ejemplo utiliza la colección movies de la muestra datasets sample_mflix. Para más información sobre cómo cargar este datasets en tu implementación, consulta Carga el datasets 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.

Volver

$top

En esta página