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

$addToSet (operador acumulador )

$addToSet

Retorna uma array de valores únicos para uma expressão avaliada em documentos em um grupo. A ordem dos elementos na array não é especificada.

$addToSet está disponível nestes estágios:

Observação

Desambiguação

Esta página descreve $addToSet quando usado como acumulador. Os acumuladores retornam um único valor agregado como soma, máximo ou mínimo em um grupo de documentos de entrada.

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

{ $addToSet: <expression> }

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

Se o valor da expressão for uma array, $addToSet anexará a array inteira como um único elemento.

Se o valor da expressão for um documento, o MongoDB determinará que o documento é duplicado se outro documento na array corresponder exatamente ao documento adicionado. Especificamente, o documento existente tem exatamente os mesmos campos e valores na mesma ordem.

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.

A operação a seguir agrupa filmes por diretor e usa o acumulador $addToSet para coletar os gêneros exclusivos em que cada diretor trabalhou. Para melhorar a legibilidade, o pipeline limita os resultados aos cinco primeiros diretores em ordem alfabética.

db.movies.aggregate( [
{
$unwind: "$directors"
},
{
$unwind: "$genres"
},
{
$group: {
_id: "$directors",
genres: { $addToSet: "$genres" }
}
},
{
$sort: { _id: 1 }
},
{
$limit: 5
}
] )

Esse pipeline retorna esses resultados:

[
{ _id: 'A. Dean Bell', genres: [ 'Crime', 'Drama' ] },
{ _id: 'A. Karunakaran', genres: [ 'Romance' ] },
{ _id: 'A. Vanichkin', genres: [ 'Animation', 'Fantasy' ] },
{ _id: 'A.J. Edwards', genres: [ 'Biography', 'Drama', 'History' ] },
{
_id: 'A.R. Murugadoss',
genres: [ 'Drama', 'Sci-Fi', 'Thriller', 'Action', 'Mystery' ]
}
]