Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

$setEIgals (agregação)

Nesta página

  • Definição
  • Comportamento
  • Exemplo
$setEquals

Compara dois ou mais arrays e retorna true caso tenham os mesmos elementos distintos e false caso contrário.

$setEquals tem a seguinte sintaxe:

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

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

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

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

Exemplo
Resultado

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

true

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

false

Considere uma collection bakeryOrders com os seguintes documentos:

db.bakeryOrders.insertMany( [
{ _id: 0, cakes: ["chocolate", "vanilla"], cupcakes: ["chocolate", "vanilla"] },
{ _id: 1, cakes: ["chocolate", "vanilla"], cupcakes: ["vanilla", "chocolate"] },
{ _id: 2, cakes: ["chocolate", "chocolate"], cupcakes: ["chocolate"] },
{ _id: 3, cakes: ["vanilla"], cupcakes: ["chocolate"] },
{ _id: 4, cakes: ["vanilla"], cupcakes: [] }
] )

A operação a seguir usa o operador $setEquals para determinar se os arrays cakes e cupcakes em cada pedido contêm os mesmos sabores:

db.bakeryOrders.aggregate(
[
{
$project: {
_id: 0,
cakes: 1,
cupcakes: 1,
sameFlavors: { $setEquals: [ "$cakes", "$cupcakes" ] }
}
}
] )

Observação

$project

O estágio $project especifica quais campos são incluídos nos documentos de saída. Neste exemplo, o estágio $project:

  • Exclui o campo _id da saída.

  • Inclui os campos cakes e cupcakes na saída.

  • Gera o resultado do operador $setEquals em um novo campo chamado sameFlavors.

A operação retorna os seguintes resultados:

{
cakes: [ "chocolate", "vanilla" ],
cupcakes: [ "chocolate", "vanilla" ],
sameFlavors: true
},
{
cakes: [ "chocolate", "vanilla" ],
cupcakes: [ "vanilla", "chocolate" ],
sameFlavors: true
},
{
cakes: [ "chocolate", "chocolate" ],
cupcakes: [ "chocolate" ],
sameFlavors: true
},
{
cakes: [ "vanilla" ],
cupcakes: [ "chocolate" ],
sameFlavors: false
},
{
cakes: [ "vanilla" ],
cupcakes: [],
sameFlavors: false
}

Voltar

$setDifference