Definición
Devuelve los elementos n inferiores dentro de una ventana en particular, según el orden de clasificación especificado.
Nota
Desambiguación
Esta página describe $bottomN cuando se utiliza como función de ventana.
También puede usar $bottomN (accumulator), que devuelve los elementos n inferiores dentro de un grupo según el orden de clasificación especificado.
Sintaxis
{ $setWindowFields: { ... output: { <field>: { $bottomN: { n: <expression>, output: <expression>, sortBy: { <field1>: <sort order>, <field2>: <sort order> ... } }, window: { documents: [ <lower boundary>, <upper boundary> ] } } } } }
opciones
Campo | Necesidad | Descripción |
|---|---|---|
| Requerido | Número de resultados a devolver. Debe redondearse a un valor entero positivo. Si la ventana contiene menos de |
| Requerido | Determina la salida para cada documento en la ventana. Puede ser cualquier expresión. |
| Requerido | Define el orden de clasificación de los elementos dentro de la ventana, con una sintaxis similar a |
Ejemplo
Los ejemplos de esta página utilizan datos del conjunto de datos sample_mflix. Para obtener más información sobre cómo cargar este conjunto de datos en su implementación autogestionada de MongoDB, consulte Cargar el conjunto de datos de ejemplo. Si realizó alguna modificación en las bases de datos de ejemplo, es posible que deba eliminarlas y volver a crearlas para ejecutar los ejemplos de esta página.
Encuentra las tres películas peor valoradas en una ventana
Este ejemplo utiliza la función de ventana $bottomN para devolver cada película junto con las tres películas peor valoradas estrenadas en el mismo año.
db.movies.aggregate( [ { $unwind: "$genres" }, { $match: { genres: "Action", rated: "PG-13", "imdb.rating": { $lte: 5 }, year: { $in: [ 2000, 2001, 2002 ] } } }, { $setWindowFields: { partitionBy: "$year", output: { lowestThreeMovies: { $bottomN: { sortBy: { "imdb.rating": -1, title: 1 }, output: [ "$title", "$imdb.rating" ], n: 3 }, window: { documents: [ "unbounded", "unbounded" ] } } } } }, { $project: { _id: 0, title: 1, year: 1, "imdb.rating": 1, lowestThreeMovies: 1 } } ] )
En el ejemplo precedente:
$unwinddescompone el arraygenresde modo que cada documento de película contiene solo un único género.$matchrestringe la entrada aActionpelículas que tienen una calificación dePG-13, un valor deimdb.ratingde 5 o menos, y fueron estrenadas en 2000, 2001 o 2002.$setWindowFieldsdivide los documentos poryear.window: { documents: [ "unbounded", "unbounded" ] }abarca toda la partición del año, por lo que$bottomNconsidera todos los documentos del año al determinar las tres películas peor calificadas.$bottomNUtilizasortBy: { "imdb.rating": -1, title: 1 }para clasificar las películas según su puntuación en IMDb ytitlecomo criterio de desempate. Todos los documentos del mismo año reciben el mismo valorlowestThreeMovies.$projectElimina los campos innecesarios para resaltar el resultado de la función de ventana.