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.
Menu Docs

$push (operador acumulador )

$push

Retorna um array de todos os valores que resultam da aplicação de uma expressão a cada documento em um grupo.

O acumulador $push está disponível nestes estágios:

Observação

Desambiguação

Esta página descreve $push quando usado como um acumulador. Acumuladores retornam um valor agregado em um grupo de documentos de entrada.

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

{ $push: <expression> }

Para mais informações sobre expressões, consulte Expressões.

Quando você usa $push como um acumulador, a ordem dos documentos que entram no pipeline determina a ordem dos documentos na array de saída. Para garantir uma ordem definida, coloque um $sort estágio antes do $group estágio.

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

A operação a seguir agrupa filmes por diretor e usa o acumulador $push para coletar o gênero primário de cada filme dirigido por esse diretor.

db.movies.aggregate( [
{
$match: {
year: { $gte: 2010, $lte: 2015 },
genres: { $exists: true, $ne: [] },
directors: { $exists: true, $ne: [] }
}
},
{
$unwind: "$directors"
},
{
$group: {
_id: "$directors",
genres: { $push: { $first: "$genres" } }
}
},
{
$sort: { _id: 1 }
},
{
$limit: 5
}
] )

O pipeline anterior:

  • Usa $match para usar filtro para filtrar filmes de 2010-2015 que têm informações de gênero e diretor.

  • Usa $unwind para criar um documento separado para cada diretor no array directors.

  • Agrupa os documentos resultantes por diretor e usa $push para coletar o gênero primário de cada filme.

  • Ordena os resultados pelo nome do diretor em ordem alfabética.

  • Limita a saída a cinco diretores.

No resultado, A.R. Murugadoss tem Action listado duas vezes porque dirigiram dois filmes com Action como gênero primário. Isso demonstra que $push inclui valores duplicados, ao contrário de $addToSet, que retorna um array de valores exclusivos.