Definición
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.
Sintaxis
{ $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 |
salida | Requerido | Especifica la salida para cada elemento de la ventana. Puede ser cualquier expresión. |
Comportamiento
Valores nulos y faltantes
$bottomno filtra los valores nulos.$bottomconvierte los valores faltantes en null.
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.
Calcular la calificación relativa a la película peor calificada en un período de tiempo determinado.
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:
$setWindowFieldsdivide los documentos poryear.La ventana abarca desde
unboundedhastaunbounded, lo que significa que$bottomconsidera todos los documentos en la partición al determinar la película peor calificada.$bottomDevuelve la película peor valorada en cada partición como un documento incrustado que contiene los campostitleyrating.$projectcalcularatingAboveWorstrestando 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.$limitlimita 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.