Version 2.6+ uniquement :
Depuis la version 2.6 de MongoDB, cela est devenu beaucoup plus facile. Vous pouvez maintenant effectuer les opérations suivantes pour résoudre ce problème :
Union
db.colors.aggregate([
{'$project': {
union:{$setUnion:["$left","$right"]}
}
}
]);
Intersection
db.colors.aggregate([
{'$project': {
int:{$setIntersection:["$left","$right"]}
}
}
]);
Complément relatif
db.colors.aggregate([
{'$project': {
diff:{$setDifference:["$left","$right"]}
}
}
]);
Différence symétrique
db.colors.aggregate([
{'$project': {
diff:{$setUnion:[{$setDifference:["$left","$right"]}, {$setDifference:["$right","$left"]}]}
}
}
]);
Remarque :Il existe un ticket demander que la différence symétrique soit ajoutée en tant que fonctionnalité principale plutôt que d'avoir à faire l'union de deux différences définies.