Definición
$bottomNNuevo en la versión 8.3.
Devuelve los últimos
nelementos de un arreglo según el orden de clasificación especificado. Si el arreglo contiene menos denelementos,$bottomNdevuelve todos los elementos del arreglo.
Nota
Desambiguación
Esta página describe el operador de expresión $bottomN. Para el $bottomN operador de acumulación, consulte $bottomN (operador de acumulación).
Sintaxis
Cuando se utiliza como operador de expresión, $bottomN tiene la siguiente sintaxis:
{ $bottomN: { n: <expression>, sortBy: { <field1>: <sort order>, <field2>: <sort order> ... }, 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. Consultar Comportamiento de clasificación para obtener más información. |
entrada | Requerido | El arreglo que |
Comportamiento
Comportamiento de ordenamiento
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 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| | ||||||||||
|
| | ||||||||||
|
| |
Input Values
El campo input debe resolver en un arreglo. En caso de que especifiques un input que no sea un arreglo, MongoDB arrojará un error.
Ejemplo
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 $bottomN en el arreglo cast:
db.movies.aggregate([ { $match: { title: "The Godfather" } }, { $project: { _id: 0, title: 1, lastThreeCastMembersAlphabetically: { $bottomN: { n: 3, sortBy: 1, input: "$cast" } } } } ])
[ { title: 'The Godfather', lastThreeCastMembersAlphabetically: [ 'James Caan', 'Marlon Brando', 'Richard S. Castellano' ] } ]
En este ejemplo, $bottomN ordena el arreglo existente cast en orden alfabético ascendente y devuelve los últimos tres valores.