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

$push (función de ventana)

$push

Devuelve una matriz con todos los valores, incluidos los duplicados, que resultan de aplicar una expresión a cada documento en una ventana.

Nota

Desambiguación

Esta página describe $push cuando se utiliza como función de ventana.

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

{
$setWindowFields: {
...
output: {
<field>: {
$push: <expression>
}
}
}
}

$push Incluye todos los valores de la ventana, incluidos los duplicados. El orden de los elementos en la matriz de salida corresponde al orden de clasificación especificado en el campo $setWindowFields sortBy.

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 la función de ventana $push para crear una lista acumulativa de géneros en las películas de 2002. Para cada película, $push agrega el género principal de la película a genresSeenSoFar, conservando todos los valores, incluidos los duplicados.

db.movies.aggregate( [
{
$match: {
year: 2002,
genres: { $exists: true, $ne: [] }
}
},
{
$addFields: {
primaryGenre: { $first: "$genres" }
}
},
{
$setWindowFields: {
sortBy: { title: 1 },
output: {
genresSeenSoFar: {
$push: "$primaryGenre",
window: {
documents: [ "unbounded", "current" ]
}
}
}
}
},
{
$project: {
_id: 0,
genresSeenSoFar: "$genresSeenSoFar",
year: "$year",
title: "$title",
genre: "$primaryGenre",
totalGenreCount: { $size: "$genresSeenSoFar" }
}
},
{
$limit: 8
}
] )

En el ejemplo:

totalGenreCount aumenta en uno con cada documento. El séptimo documento ('3 Extremes II') tiene el género Horror, que ya estaba en el array, por lo que Horror aparece dos veces en genresSeenSoFar. Esto demuestra que $push incluye valores duplicados, a diferencia de $addToSet, que solo añade valores únicos.