Docs Menu
Docs Home
/ /

$setEquals (agregación)

$setEquals

Compara dos o más arreglos y devuelve true si tienen los mismos elementos distintos y false en caso contrario.

$setEquals tiene la siguiente sintaxis:

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

Los argumentos pueden ser cualquier válido. expresión, siempre que cada una de ellas se resuelva en una matriz. Para más información sobre expresiones, consulte Expresiones.

$setEquals realiza operaciones de conjunto en matrices, tratándolas como conjuntos. Si una matriz contiene entradas duplicadas, $setEquals las ignora. $setEquals ignora el orden de los elementos.

Si un conjunto contiene un elemento de arreglo anidado, $setEquals no desciende al arreglo anidado, sino que evalúa el arreglo en el nivel superior.

Ejemplo
Resultado

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

true

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

false

Considera una colección bakeryOrders con los siguientes 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: [] }
] )

La siguiente operación utiliza el operador para determinar si $setEquals la cakes matriz y la cupcakes matriz en cada orden contienen los mismos sabores:

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

Nota

$project

La etapa especifica qué campos se incluyen en $project $project los documentos de salida. En este ejemplo, la etapa:

  • Excluye el campo _id de la salida.

  • Incluye los campos cakes y cupcakes en la salida.

  • Genera el resultado del operador $setEquals en un nuevo campo llamado sameFlavors.

La operación devuelve los siguientes 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
}

Volver

$setDifference

En esta página