Docs Menu
Docs Home
/ /

$maxN (operador acumulador)

$maxN

Nuevo en la versión 5.2.

Devuelve los n valores más grandes de una matriz.

Tip

$minN

$maxN tiene la siguiente sintaxis:

{ $maxN: { n: <expression>, input: <expression> } }
Campo
Descripción

n

Una expresión que se resuelve en un entero positivo. El entero especifica el número de elementos de la matriz que $maxN devuelve.

input

Una expresión que se resuelve en la matriz desde la cual se devolverán los n elementos máximos.

  • No se puede especificar un valor de n menor que 1.

  • $maxN filtra null valores encontrados en la input matriz.

  • Si el especificado n es mayor o igual que el número de elementos en la input matriz, devuelve todos los elementos en$maxN la input matriz.

  • Si input se resuelve en un valor que no es una matriz, la operación de agregación genera un error.

  • Si input contiene 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.

Crea una colección scores con los siguientes documentos:

db.scores.insertMany([
{ "playerId" : 1, "score" : [ 1, 2, 3 ] },
{ "playerId" : 2, "score" : [ 12, 90, 7, 89, 8 ] },
{ "playerId" : 3, "score" : [ null ] },
{ "playerId" : 4, "score" : [ ] },
{ "playerId" : 5, "score" : [ 1293, "2", 3489, 9 ]}
])

El siguiente ejemplo utiliza el operador $maxN para recuperar las dos puntuaciones más altas de cada jugador. Las puntuaciones más altas se devuelven en el nuevo campo maxScores creado por $addFields.

db.scores.aggregate([
{ $addFields: { maxScores: { $maxN: { n: 2, input: "$score" } } } }
])

La operación devuelve los siguientes resultados:

[{
"playerId": 1,
"score": [ 1, 2, 3 ],
"maxScores": [ 3, 2 ]
},
{
"playerId": 2,
"score": [ 12, 90, 7, 89, 8 ],
"maxScores": [ 90, 89 ]
},
{
"playerId": 3,
"score": [ null ],
"maxScores": [ ]
},
{
"playerId": 4,
"score": [ ],
"maxScores": [ ]
},
{
"playerId": 5,
"score": [ 1293, "2", 3489, 9 ],
"maxScores": [ "2", 3489 ]
}]

Volver

$map

En esta página