Definición
Devuelve una matriz que contiene los últimos n elementos dentro de una ventana.
Nota
Desambiguación
Esta página describe $lastN cuando se utiliza como función de ventana.
También puedes usar $lastN en estos otros contextos:
$lastN (accumulator), utilizado en la agrupación para devolver los últimosnelementos de cada grupo.$lastN (expression), que devuelve el número especificado de elementos desde el final de una matriz.
Sintaxis
{ $setWindowFields: { ... output: { <field>: { $lastN: { input: <expression>, n: <expression> } } } } }
opciones
Campo | Tipo | Descripción |
|---|---|---|
| expresión | La expresión |
| expresión | El número de elementos que Si la ventana contiene menos de |
Comportamiento
$lastN Presenta los siguientes comportamientos para valores nulos y faltantes:
$lastNno filtra los valores nulos.$lastNconvierte 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.
Este ejemplo utiliza $setWindowFields para particionar las películas por year, ordenarlas por imdb.rating en orden descendente y devolver las tres películas peor valoradas de cada año.
db.movies.aggregate( [ { $match: { year: { $in: [ 1979, 1985, 1992 ] }, "imdb.rating": { $lte: 4.5, $gt: 0 } } }, { $setWindowFields: { partitionBy: "$year", sortBy: { "imdb.rating": -1, "title": 1 }, output: { lowestRatedThreeMoviesInYear: { $lastN: { input: "$title", n: 3 }, window: { documents: [ "unbounded", "unbounded" ] } } } } }, { $project: { _id: 0, title: 1, year: 1, "imdb.rating": 1, lowestRatedThreeMoviesInYear: 1 } }, { $sort: { year: 1, "imdb.rating": -1, "title": 1 } } ] )
La tubería precedente:
Utiliza la etapa
$matchpara filtrar los resultados a películas estrenadas en 1979, 1985 y 1992 con una calificación IMDb de 4.5 o inferior.Utiliza
$setWindowFieldspara particionar las películas poryeary ordenarlas porimdb.ratingen orden descendente contitlecomo criterio de desempate. El escenario utiliza$lastNconn: 3para crearlowestRatedThreeMoviesInYeara partir de una ventana definida comodocuments: [ "unbounded", "unbounded" ].Utiliza
$projectpara incluir solo los campostitle,year,imdb.ratingylowestRatedThreeMoviesInYearen la salida.Utiliza
$sortpara ordenar los resultados por año, calificación y título.