$addToSet (Adicionar ao Conjunto)
Última atualização: 2026-10-09
$addToSet (Adicionar ao Conjunto)
$addToSet adiciona um valor a um array apenas se ele já não estiver presente, mantendo o array livre de duplicatas. `{ $addToSet: { tags: 'mongodb' } }`. Para adicionar vários valores de uma vez, combine com $each. A detecção de duplicatas compara valores inteiros (documentos aninhados campo a campo). Ótimo para tags e listas de seguidores.
| Categoria | Atualização de Array |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $addToSet: { <campo de array>: <valor> } }
⚙️ Parâmetros
| campo de array | O campo de matriz ao qual adicionar. |
|---|---|
| valor | O valor a adicionar; ignorado se já estiver presente. |
Retorno:O resultado da atualização
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $addToSet: adiciona tag (pulada se já presente)
db.articles.updateOne(
{ _id: 1 },
{ $addToSet: { tags: 'mongodb' } }
)
// Vários valores exigem $each
db.articles.updateOne(
{ _id: 1 },
{ $addToSet: { tags: { $each: ['database', 'nosql'] } } }
)
Saída:
// mongodb existente não é duplicado; database e nosql são acrescentados
📌 Notas
- A deduplicação compara valores inteiros
- Vários valores de uma vez exigem $each
- Cria o array se ausente; campos não-array geram erro
🏷️ Tags Relacionados
💡 Casos Relacionados
Consultas a matrizes e documentos aninhados
Prática: CRUD para um sistema de comentários de blog
Atualização do documento: Uma explicação detalhada sobre `updateOne` e `updateMany`
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QQual é a diferença entre $addToSet e $push?
A$addToSet deduplica; $push acrescenta e permite duplicatas.
QComo adiciono vários valores de uma vez?
AUse $each: { $addToSet: { tags: { $each: ['a', 'b'] } } }.
Q$addToSet pode adicionar documentos aninhados?
ASim; a deduplicação compara o documento inteiro.