Learn the "why" behind slow queries and how to fix them in our 2-Part Webinar.
Register now >
Docs Menu
Docs Home
/ /

$maxN (operador de expresión)

$maxN

Nuevo en la versión 5.2.

Devuelve los valores más grandes de n en un arreglo.

Tip

$minN

$maxN tiene la siguiente sintaxis:

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

n

Una expresión que resuelve a un entero positivo. El entero especifica el número de elementos del arreglo que $maxN devuelve.

input

Una expresión que resuelve el arreglo desde el cual devolver los elementos máximos de n.

  • No puedes especificar un valor de n menor que 1.

  • $maxN filtra los valores de null encontrados en el arreglo input.

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

  • Si input resulta en un valor que no es un arreglo, la operación de agregación genera errores.

  • Si input contiene tanto elementos numéricos como de cadena, los elementos de cadena se ordenan antes que los numéricos de acuerdo con 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