$setUnion (União de Conjuntos)
Última atualização: 2026-10-09
$setUnion (União de Conjuntos)
$setUnion retorna a união de dois ou mais arrays, deduplicada, sem ordem de elementos garantida. Como expressão de conjunto, é comum em $project e $addFields; desde o MongoDB 8.1, ele também pode atuar como acumulador de $group. Ao contrário de $concatArrays, ele deduplica. Serve para mesclar tags ou listas de permissões.
| Categoria | Acumuladores |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $setUnion: [ <array1>, <array2>, ... ] }
Retorno:União de todas as matrizes de entrada (sem duplicatas, sem ordem)
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $setUnion: mescla e deduplica arrays de tags
db.products.aggregate([
{ $project: { allTags: { $setUnion: ['$tags', ['hot']] } } }
])
Saída:
// As tags existentes não são duplicadas
📌 Notas
- Deduplica automaticamente — um conjunto de verdade
- A ordem dos elementos não é garantida
- Pode ser usado como acumulador de $group desde o MongoDB 8.1
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QQual é a diferença entre $setUnion e $concatArrays?
A$setUnion deduplica e fica sem ordem; $concatArrays mantém cada elemento em ordem.
QAs entradas precisam ser arrays?
ASim, cada entrada precisa ser um array, senão gera erro.
QEle pode ser um acumulador de $group?
ADesde o MongoDB 8.1, sim — unindo campos de conjunto entre os documentos do grupo.