$setDifference (Diferença de Conjuntos)

Última atualização: 2026-10-09

$setDifference (Diferença de Conjuntos)

$setDifference retorna os elementos presentes no primeiro array e ausentes no segundo, com duplicatas removidas. Usos típicos: encontrar produtos que um usuário comprou mas não favoritou, ou fazer o diff de duas listas de nomes. Ambos os argumentos devem ser arrays, e elementos null são ignorados. O resultado não tem ordem garantida, e as posições relativas após a deduplicação não são preservadas. Operadores de conjunto tratam arrays como conjuntos, formando uma família com $setIntersection e $setUnion.

CategoriaConjunto, Condição e Conversão
Versão do MongoDB1.0+
Idioma do Exemplomongosh (Shell)

📝 Sintaxe

{ $setDifference: [ <arrayA>, <arrayB> ] }

⚙️ Parâmetros

array AO conjunto do qual subtrair.
array BO conjunto a subtrair.

Retorno:Uma matriz (sem duplicatas) de elementos em A mas não em B; null quando qualquer argumento é null

▶ Exemplo

Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):

// $setDifference: comprado mas não favoritado
db.users.aggregate([
  { $project: {
      notFav: { $setDifference: ['$bought', '$favorites'] }
  } }
])

Saída:

{ '_id': 1, 'notFav': [ 'skuB' ] }

📌 Notas

Mais casos práticos em breve.

📚 Tutoriais Relacionados

❓ Perguntas Frequentes

QO resultado é deduplicado?
ASim — sob semântica de conjunto, cada elemento aparece uma vez.
QO resultado mantém a ordem da entrada?
ASem garantia — não dependa da ordem em etapas posteriores.
QComo difere de $filter?
A$filter remove por condição por elemento; $setDifference calcula uma diferença de conjuntos contra outro array.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%