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

$setUnion (expressão)

$setUnion

Obtém duas ou mais arrays e retorna uma única array contendo os elementos exclusivos que aparecem em qualquer array de entrada.

Observação

Desambiguação

Esta página descreve $setUnion quando usado como uma expressão, que combina duas ou mais arrays em uma única array de elementos únicos.

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

{
$setUnion: [ <expression1>, <expression2>, ... ]
}

$setUnion executa operação de conjunto em arrays, tratando arrays como conjuntos. Se uma array contiver entradas duplicadas, $setUnion ignorará as entradas duplicadas. $setUnion ignora a ordem dos elementos.

$setUnion filtra duplicatas em seu resultado para gerar uma matriz que contém apenas entradas exclusivas. A ordem dos elementos na matriz de saída não é especificada.

Os argumentos podem ser qualquer expressão válida, desde que cada um deles resolva para uma array. Para mais informações sobre expressões, consulte Expressões.

Se um conjunto contiver um elemento de array aninhada, $setUnion não desce para a array aninhada, mas avalia a array no nível superior.

A tabela a seguir mostra os resultados que $setUnion retorna para diferentes entradas:

Exemplo
Resultado
Notas
{ $setUnion: [
[ "a", "c" ],
[ "a", "b" ]
] }
[ "a", "c", "b" ]

Todos os elementos de ambas as arrays são combinados e os elementos duplicados removidos.

{ $setUnion: [
[ "a", "c" ],
[ "a", "b", "c" ]
] }
[ "a", "c", "b" ]

Todos os elementos de ambas as arrays são combinados e os elementos duplicados removidos.

{ $setUnion: [
[ "a", "b", "a" ],
[ "b", "a" ]
] }
[ "a", "b" ]

Todos os elementos de ambas as arrays são combinados e os elementos duplicados removidos.

{ $setUnion: [
[ "a", "b" ],
[ [ "a", "b" ] ]
] }
[ "a", "b", [ "a", "b" ] ]

O resultado inclui "a" e "b" como elementos de string individuais e a array [ "a", "b" ] como um elemento único.

{ $setUnion: [
[ ],
[ "a", "b" ]
] }
[ "a", "b" ]

O resultado consiste nos elementos exclusivos na segunda array porque a primeira array está vazia.

{ $setUnion: [
[ "a", "a" ],
[ "a", "b" ]
] }
[ "a", "b" ]

Todos os elementos de ambas as arrays são combinados e os elementos duplicados removidos.

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.

Este exemplo utiliza $setUnion para combinar as arrays cast e directors em uma única array das pessoas créditodas em cada filme:

db.movies.aggregate( [
{
$match: { title: { $in: [ "Annie Hall", "Reservoir Dogs" ] } }
},
{
$project: {
_id: 0,
title: 1,
cast: 1,
directors: 1,
keyContributors: { $setUnion: [ "$cast", "$directors" ] }
}
},
{
$sort: { title: 1 }
}
] )

O pipeline anterior:

  • Utiliza $match para filtrar dois filmes.

  • Utiliza $project com $setUnion para combinar cast e directors no campokeyContributors.

  • Utiliza $sort para classificar resultados por title.

Para Annie Hall, Wiphyllum allen aparece em cast e directors, mas aparece apenas uma vez em keyContributors, porque $setUnion remove elementos duplicados.

  • $setUnion suporta apenas arrays e expressões que resolvem para uma array.