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

$bottom (función de ventana)

$bottom

Nuevo en la versión 5.2.

Devuelve el último elemento dentro de una ventana según el orden de clasificación especificado.

Nota

Desambiguación

Esta página describe $bottom cuando se usa como función de ventana. También puede usar $bottom en estos otros contextos:

  • $bottom (expression operator), que devuelve el último elemento de una matriz según un orden de clasificación especificado.

  • $bottom (accumulator), que devuelve el último elemento dentro de un grupo según el orden de clasificación especificado.

{
$setWindowFields: {
...
output: {
<field>: {
$bottom: {
sortBy: { <field1>: <sort order>, <field2>: <sort order> ... },
output: <expression>
}
}
}
}
}
Campo
Necesidad
Descripció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.

salida

Requerido

Especifica la salida para cada elemento de la ventana. Puede ser cualquier expresión.

  • $bottom no filtra los valores nulos.

  • $bottom convierte los valores faltantes en null.

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 $bottom como función de ventana para calcular la calificación del documento actual en relación con la película peor calificada del mismo año. Cada documento de película contiene la calificación de dicha película y un campo calculado que muestra cuánto mayor es la calificación de la película en comparación con la película peor calificada del mismo año.

db.movies.aggregate( [
{
$match: {
year: { $in: [ 1980, 1981, 1982 ] },
"imdb.rating": { $exists: true, $ne: null },
genres: "Family",
rated: "PG"
}
},
{
$setWindowFields: {
partitionBy: "$year",
output: {
lowestRatedInYear: {
$bottom: {
output: { title: "$title", rating: "$imdb.rating" },
sortBy: { "imdb.rating": -1 }
},
window: {
documents: [ "unbounded", "unbounded" ]
}
}
}
}
},
{
$project: {
_id: 0,
title: 1,
year: 1,
rating: "$imdb.rating",
lowestRatedInYear: 1,
ratingAboveWorst: {
$subtract: [ "$imdb.rating", "$lowestRatedInYear.rating" ]
}
}
},
{
$limit: 10
}
] )

En este ejemplo:

  • $setWindowFields divide los documentos por year.

  • La ventana abarca desde unbounded hasta unbounded, lo que significa que $bottom considera todos los documentos en la partición al determinar la película peor calificada.

  • $bottom Devuelve la película peor valorada en cada partición como un documento incrustado que contiene los campos title y rating.

  • $project calcula ratingAboveWorst restando la calificación más baja de la calificación de cada película, mostrando cuánto más califica cada película que la peor de su año.

  • $limit limita la salida a documentos 10.

Este método conserva todos los documentos individuales de las películas e incluye una comparación de cada una con la película de peor desempeño de su año.

Califique esta página