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

$firstN (operador de acumulación)

$firstN

Devuelve una agregación de los primeros n elementos de un grupo. Los resultados solo son válidos si los datos de entrada a la etapa de agrupación tienen un orden de clasificación definido. Si el grupo contiene menos de n elementos, $firstN devuelve todos los elementos del grupo.

El acumulador $firstN está disponible en estas etapas:

Nota

Desambiguación

Esta página describe $firstN cuando se utiliza como acumulador. Los acumuladores devuelven un único valor agregado, como la suma, el máximo o el mínimo, de un grupo de documentos de entrada.

También puedes usar $firstN en estos otros contextos:

{
$firstN:
{
input: <expression>,
n: <expression>
}
}
Campo
Tipo
Descripción

input

expresión

La expresión input se evalúa sobre cada documento del grupo de entrada y se conservan los primeros resultados n.

n

expresión

El número de elementos que $firstN devuelve del grupo. Para ver un ejemplo de cómo configurar n dinámicamente en función de la clave del grupo, consulte Configurar n en función de la clave del grupo.

  • $firstN no filtra los valores nulos.

  • $firstN convierte los valores faltantes en null.

Tanto los acumuladores $firstN como los $topN pueden lograr resultados similares.

En general:

  • Si los documentos que ingresan a $group ya están ordenados, debes usar $firstN.

  • Si está clasificando y seleccionando los n elementos principales, entonces puede usar $topN para lograr ambas tareas con un solo acumulador.

Los ejemplos de esta página utilizan la colección movies del conjunto de datos de ejemplo sample_mflix. Para aprender a cargar el conjunto de datos de ejemplo en su implementación de MongoDB, consulte Importar datos de ejemplo en su implementación de Atlas.

Puedes usar el acumulador $firstN para encontrar las tres primeras películas de un mismo género.

db.movies.aggregate( [
{
$match: { genres: "Horror" }
},
{
$sort: { year: 1 }
},
{
$group:
{
_id: "Horror",
firstThreeMovies:
{
$firstN:
{
input: [ "$title", "$year" ],
n: 3
}
}
}
}
] )

La tubería precedente:

  • Utiliza $match para filtrar los resultados a películas donde Horror está incluido en el array genres.

  • Ordena los resultados por year en orden ascendente.

  • Agrupa todos los documentos resultantes en un único grupo.

  • Especifica los campos que son datos para $firstN con input : ["$title", "$year"].

  • Utiliza $firstN para devolver los tres primeros documentos del género Horror con n: 3.

Puedes usar el acumulador $firstN para encontrar los primeros n campos de entrada en cada género.

db.movies.aggregate( [
{
$unwind: "$genres"
},
{
$sort: { year: 1 }
},
{
$group:
{
_id: "$genres",
movies:
{
$firstN:
{
input: [ "$title", "$year" ],
n: 3
}
}
}
},
{ $sort: { _id: 1 } },
{ $limit: 5 }
] )

La tubería precedente:

  • Utiliza $unwind para crear un documento separado para cada género en el array genres.

  • Ordena los resultados por year en orden ascendente.

  • Utiliza $group para agrupar los resultados por genres.

  • Utiliza $firstN para devolver los tres primeros documentos de cada género con n: 3.

  • Especifica los campos que son datos para $firstN con input : ["$title", "$year"].

  • Limita la salida a cinco documentos para mejorar la legibilidad.

Puede asignar el valor de n dinámicamente en función de la clave de grupo. En este ejemplo, la expresión $cond utiliza el campo rated para cambiar el valor de n:

db.movies.aggregate([
{ $match: { rated: { $in: ["G", "PG", "PG-13", "R"] } } },
{ $sort: { title: 1 } },
{
$group:
{
_id: {"rated": "$rated"},
movies:
{
$firstN:
{
input: "$title",
n: { $cond: { if: { $eq: ["$rated", "PG"] }, then: 3, else: 1 } }
}
}
}
}
] )

La tubería precedente:

  • Filtros para películas con calificaciones de G, PG, PG-13 o R.

  • Ordena los resultados alfabéticamente por title.

  • Agrupa las películas por rated (la calificación de la película).

  • Utiliza la expresión $cond para devolver las películas 3 para las películas con calificación PG y la película 1 para todas las demás calificaciones.

En la salida, la calificación PG devuelve 3 películas, mientras que las calificaciones G, PG-13 y R devuelven cada una 1 película.