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

$lastN (función de ventana)

$lastN

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 últimos n elementos de cada grupo.

  • $lastN (expression), que devuelve el número especificado de elementos desde el final de una matriz.

{
$setWindowFields: {
...
output: {
<field>: {
$lastN: {
input: <expression>,
n: <expression>
}
}
}
}
}
Campo
Tipo
Descripción

input

expresión

La expresión input se evalúa sobre cada documento en la ventana y se conservan los últimos resultados n.

n

expresión

El número de elementos que $lastN devuelve desde la ventana. Debe ser un número entero positivo.

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

$lastN Presenta los siguientes comportamientos para valores nulos y faltantes:

  • $lastN no filtra los valores nulos.

  • $lastN 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 $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 $match para filtrar los resultados a películas estrenadas en 1979, 1985 y 1992 con una calificación IMDb de 4.5 o inferior.

  • Utiliza $setWindowFields para particionar las películas por year y ordenarlas por imdb.rating en orden descendente con title como criterio de desempate. El escenario utiliza $lastN con n: 3 para crear lowestRatedThreeMoviesInYear a partir de una ventana definida como documents: [ "unbounded", "unbounded" ].

  • Utiliza $project para incluir solo los campos title, year, imdb.rating y lowestRatedThreeMoviesInYear en la salida.

  • Utiliza $sort para ordenar los resultados por año, calificación y título.

Califique esta página