Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Menu Docs

$push (função de janela)

$push

Retorna uma array de todos os valores, incluindo duplicatas, que resultam da aplicação de uma expressão a cada documento em uma janela.

Observação

Desambiguação

Esta página descreve $push quando usado como uma função de janela.

Você também pode usar $push nestes outros contextos:

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

$push inclui todos os valores na janela, inclusive duplicatas. A ordem dos elementos na array de saída corresponde à ordem de classificação especificada no campo$setWindowFields sortBy .

Os exemplos nesta página usam dados do conjunto de dados sample_mflix. Para obter detalhes sobre como carregar esse conjunto de dados em sua implantação autogerenciada do MongoDB , consulte Carregar o conjunto de dados de amostra. Se você fez modificações nos bancos de dados de amostra, talvez seja necessário descartar e recriar os bancos de dados para executar os exemplos nesta página.

Este exemplo usa a função de janela $push para criar uma lista de execução de gêneros em filmes de 2002. Para cada filme, $push adiciona o gênero principal do filme a genresSeenSoFar, mantendo todos os valores, incluindo os 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
}
] )

No exemplo:

  • O estágio $match filtra para filmes de 2002 com informações de gênero.

  • O estágio $addFields adiciona um campo primaryGenre que contém o primeiro elemento na array genres.

  • O estágio $setWindowFields usa $push com uma janela de unbounded a current para acumular todos os gêneros desde o início da configuração de resultados até o documento atual.

  • O estágio $project remodela a saída e calcula totalGenreCount para mostrar como a array cresce com cada documento.

  • O estágio $limit restringe a saída para documentos 8 para melhorar a legibilidade.

totalGenreCount aumenta de um a cada documento. O sétimo documento ('3 Extremes II') tem gênero Horror, que já estava na array, então Horror aparece duas vezes em genresSeenSoFar. Isso demonstra que $push inclui valores duplicados, ao contrário de $addToSet, que adiciona apenas valores únicos.