Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs Menu

$bottomN (función de ventana)

$bottomN

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.

{
$setWindowFields: {
...
output: {
<field>: {
$bottomN: {
n: <expression>,
output: <expression>,
sortBy: { <field1>: <sort order>, <field2>: <sort order> ... }
},
window: {
documents: [ <lower boundary>, <upper boundary> ]
}
}
}
}
}
Campo
Necesidad
Descripción

n

Requerido

Número de resultados a devolver. Debe redondearse a un valor entero positivo.

Si la ventana contiene menos de n elementos, $bottomN devuelve todos los elementos de la ventana.

output

Requerido

Determina la salida para cada documento en la ventana. Puede ser cualquier expresión.

sortBy

Requerido

Define el orden de clasificación de los elementos dentro de la ventana, con una sintaxis similar a $sort. No afecta el orden de los documentos en la salida del pipeline.

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.

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:

  • $unwind descompone el array genres de modo que cada documento de película contiene solo un único género.

  • $match restringe la entrada a Action películas que tienen una calificación de PG-13, un valor de imdb.rating de 5 o menos, y fueron estrenadas en 2000, 2001 o 2002.

  • $setWindowFields divide los documentos por year.

  • window: { documents: [ "unbounded", "unbounded" ] } abarca toda la partición del año, por lo que $bottomN considera todos los documentos del año al determinar las tres películas peor calificadas.

  • $bottomN Utiliza sortBy: { "imdb.rating": -1, title: 1 } para clasificar las películas según su puntuación en IMDb y title como criterio de desempate. Todos los documentos del mismo año reciben el mismo valor lowestThreeMovies.

  • $project Elimina los campos innecesarios para resaltar el resultado de la función de ventana.

Califique esta página