Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Operadores de pipeline de agregación

$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 y cuando cada una resuelva a un arreglo. Para obtener más información sobre expresiones, consulta Expresiones.

$setEquals realiza operaciones de conjunto en arreglos, tratando los arreglos como conjuntos. Si un arreglo contiene entradas duplicadas, $setEquals ignora las entradas duplicadas. $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 $setEquals para determinar si el arreglo cakes y el arreglo cupcakes 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