Solo versione 2.6+:
A partire dalla versione 2.6 di MongoDB, questo è diventato molto molto più semplice. Ora puoi fare quanto segue per risolvere questo problema:
Unione
db.colors.aggregate([
{'$project': {
union:{$setUnion:["$left","$right"]}
}
}
]);
Incrocio
db.colors.aggregate([
{'$project': {
int:{$setIntersection:["$left","$right"]}
}
}
]);
Complemento relativo
db.colors.aggregate([
{'$project': {
diff:{$setDifference:["$left","$right"]}
}
}
]);
Differenza simmetrica
db.colors.aggregate([
{'$project': {
diff:{$setUnion:[{$setDifference:["$left","$right"]}, {$setDifference:["$right","$left"]}]}
}
}
]);
Nota:esiste un biglietto richiedere che la differenza simmetrica venga aggiunta come caratteristica principale piuttosto che dover fare l'unione di due differenze di insieme.