Tylko wersja 2.6+:
Od wersji 2.6 MongoDB stało się to znacznie łatwiejsze. Aby rozwiązać ten problem, możesz teraz wykonać następujące czynności:
Związek
db.colors.aggregate([
{'$project': {
union:{$setUnion:["$left","$right"]}
}
}
]);
Skrzyżowanie
db.colors.aggregate([
{'$project': {
int:{$setIntersection:["$left","$right"]}
}
}
]);
Względne uzupełnienie
db.colors.aggregate([
{'$project': {
diff:{$setDifference:["$left","$right"]}
}
}
]);
Różnica symetryczna
db.colors.aggregate([
{'$project': {
diff:{$setUnion:[{$setDifference:["$left","$right"]}, {$setDifference:["$right","$left"]}]}
}
}
]);
Uwaga:istnieje bilet żądając dodania symetrycznej różnicy jako podstawowej funkcji, zamiast konieczności łączenia dwóch zestawów różnic.