Alleen versie 2.6+:
Vanaf versie 2.6 van MongoDB is dit een stuk eenvoudiger geworden. U kunt nu het volgende doen om dit probleem op te lossen:
Unie
db.colors.aggregate([
{'$project': {
union:{$setUnion:["$left","$right"]}
}
}
]);
Kruispunt
db.colors.aggregate([
{'$project': {
int:{$setIntersection:["$left","$right"]}
}
}
]);
Relatieve aanvulling
db.colors.aggregate([
{'$project': {
diff:{$setDifference:["$left","$right"]}
}
}
]);
Symetrisch verschil
db.colors.aggregate([
{'$project': {
diff:{$setUnion:[{$setDifference:["$left","$right"]}, {$setDifference:["$right","$left"]}]}
}
}
]);
Opmerking:er is een ticket verzoeken om een symmetrisch verschil toe te voegen als een kernfunctie in plaats van het samenvoegen van twee ingestelde verschillen.