$addToSet (Acumulador de Array Único)
Última atualização: 2026-10-09
$addToSet (Acumulador de Array Único)
$addToSet é um acumulador que adiciona o resultado da expressão de cada documento a um array durante $group, deduplicando automaticamente — valores repetidos aparecem uma única vez. Como $push, mas garante unicidade. Serve para tags, listas de clientes e outras necessidades de deduplicação. A ordem dos elementos não é garantida.
| Categoria | Acumuladores |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $group: { _id: <key>, tags: { $addToSet: "$field" } } }
Retorno:Matriz sem duplicatas de resultados de expressão
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $addToSet: itens distintos por cliente
db.orders.aggregate([
{ $group: { _id: '$cust_id', items: { $addToSet: '$item' } } }
])
Saída:
{ "_id": "A123", "items": ["Pen", "Book"] }
📌 Notas
- Os elementos são únicos; duplicatas colapsam em um só
- A ordem não é garantida; ordene você mesmo se precisar
- A deduplicação usa igualdade de valores BSON (mesmo tipo e valor)
🏷️ Tags Relacionados
💡 Casos Relacionados
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QQual é a diferença entre $addToSet e $push?
A$push mantém duplicatas; $addToSet as remove.
QA ordem é garantida?
ANão, a ordem dos elementos não é garantida; ordene o resultado você mesmo.
QEle consegue deduplicar elementos de array?
ANão diretamente — ele compara valores de array inteiros; use $unwind antes para achatá-los.