Definición
Devuelve el valor de una expresión para el primer documento de una ventana.
Nota
Desambiguación
Esta página describe $first cuando se utiliza como función de ventana.
También puedes usar $first en estos otros contextos:
$first (accumulator), utilizado en la agrupación para devolver el primer valor de cada grupo.$first (expression), que devuelve el primer elemento de una matriz.
Sintaxis
{ $setWindowFields: { ... output: { <field>: { $first: <expression> } } } }
Comportamiento
La función de ventana $first tiene los siguientes comportamientos para valores nulos y faltantes:
$firstConvierte los valores de campo faltantes anull.$firstDevuelvenullpara 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 por year, ordenarlas por imdb.rating en orden descendente e identificar la película mejor valorada de cada año. Cada documento incluye un campo que muestra el título de la película mejor valorada estrenada en ese año:
db.movies.aggregate( [ { $match: { year: { $in: [ 1999, 2000, 2001 ] }, "imdb.rating": { $gte: 8.5 } } }, { $setWindowFields: { partitionBy: "$year", sortBy: { "imdb.rating": -1 }, output: { topRatedMovieInYear: { $first: "$title", window: { documents: [ "unbounded", "unbounded" ] } } } } }, { $project: { _id: 0, title: 1, year: 1, "imdb.rating": 1, topRatedMovieInYear: 1 } }, { $sort: { year: 1, "imdb.rating": -1 } } ] )
En el pipeline anterior:
$matchFiltros para películas de 1999-2001 con una calificación IMDb de 8.5 o superior.$setWindowFieldsdivide las películas poryeary las ordena porimdb.ratingen orden descendente. La etapa utiliza$firstcon una ventana definida comodocuments: [ "unbounded", "unbounded" ]para devolver el título de la película mejor valorada en cada partición del año.$projectincluye solotitle,year,imdb.ratingytopRatedMovieInYearen la salida.$sortOrdena los resultados por año y calificación.