Definición
Devuelve el valor de una expresión para el último documento en una ventana.
Nota
Desambiguación
Esta página describe $last cuando se utiliza como función de ventana.
También puedes usar $last en estos otros contextos:
$last (accumulator), utilizado en la agrupación para devolver un valor para el último documento de cada grupo.$last (expression), que devuelve el último elemento de una matriz.
Sintaxis
{ $setWindowFields: { ... output: { <field>: { $last: <expression> } } } }
Comportamiento
La función de ventana $last tiene los siguientes comportamientos para valores nulos y faltantes:
$lastConvierte los valores de campo faltantes anull.$lastDevuelvenullpara ventanas vacías.
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.
Este ejemplo utiliza $setWindowFields para particionar las películas con baja calificación según year, ordenarlas según imdb.rating en orden descendente e identificar la película con la calificación más baja de cada año. Cada documento incluye un campo que muestra el título de la película con la calificación más baja en la partición de ese año:
db.movies.aggregate( [ { $match: { year: { $in: [ 1999, 2000, 2001 ] }, "imdb.rating": { $lte: 3.5, $gt: 0 } } }, { $setWindowFields: { partitionBy: "$year", sortBy: { "imdb.rating": -1, "title": 1 }, output: { lowestRatedMovieInYear: { $last: "$title", window: { documents: [ "unbounded", "unbounded" ] } } } } }, { $project: { _id: 0, title: 1, year: 1, "imdb.rating": 1, lowestRatedMovieInYear: 1 } }, { $sort: { year: 1, "imdb.rating": -1, title: 1 } } ] )
En el pipeline anterior:
$matchFiltros para películas estrenadas entre 1999 y 2001 con una calificación IMDb de 3.5 o inferior.$setWindowFieldsdivide las películas poryeary las ordena porimdb.ratingen orden descendente, contitlecomo criterio de desempate. La etapa utiliza$lastcon una ventana definida comodocuments: [ "unbounded", "unbounded" ]para devolver el título de la película peor valorada en cada partición del año.$projectincluye solotitle,year,imdb.ratingylowestRatedMovieInYearen la salida.$sortOrdena los resultados por año, calificación y título.