Definición
Devuelve el número especificado de elementos desde el principio de un array.
Nota
Desambiguación
Esta página describe $firstN cuando se usa como una expresión, que devuelve el número especificado de elementos desde el principio de una matriz.
También puedes usar $firstN en estos otros contextos:
$firstN (accumulator), utilizado en la agrupación para devolver los primerosnelementos de cada grupo.$firstN (window function), que se utiliza en la etapa$setWindowFieldspara devolver los primerosnvalores de los documentos en una ventana en particular.
Sintaxis
{ $firstN: { input: <expression>, n: <expression> } }
opciones
Campo | Tipo | Descripción |
|---|---|---|
| expresión | El array del que se devolverán los primeros |
| expresión | El número de elementos que devuelve |
Comportamiento
$firstNdevuelve elementos en el mismo orden en que aparecen en el arreglo de entrada.$firstNno filtra los valoresnullen el array de entrada.No puedes especificar un valor de
nmenor que1.Si el
nespecificado es mayor o igual que el número de elementos en el arrayinput,$firstNdevuelve todo el arrayinput.Si
inputresulta en un valor que no es un arreglo, la operación de agregación genera errores.
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.
El siguiente ejemplo utiliza el operador $firstN para devolver los tres primeros miembros del reparto de cada película. Los miembros del reparto se devuelven en el nuevo campo firstThreeCast creado por $addFields.
db.movies.aggregate( [ { $match: { title: { $in: [ "The Godfather", "Spirited Away", "The Dark Knight" ] } } }, { $addFields: { firstThreeCast: { $firstN: { input: "$cast", n: 3 } } } }, { $project: { _id: 0, title: 1, cast: 1, firstThreeCast: 1 } }, { $sort: { title: 1 } } ] )
La tubería precedente:
Utiliza
$matchpara filtrar tres películas específicas.Utiliza
$addFieldscon$firstNpara crear un nuevo campofirstThreeCastque contiene los tres primeros elementos del arraycastconn: 3.Utiliza
$projectpara incluir solo los campostitle,castyfirstThreeCasten la salida.Utiliza
$sortpara ordenar los resultados por título.