Nur Version 2.6+:
Ab Version 2.6 von MongoDB ist dies viel einfacher geworden. Sie können dieses Problem jetzt wie folgt lösen:
Gewerkschaft
db.colors.aggregate([
{'$project': {
union:{$setUnion:["$left","$right"]}
}
}
]);
Kreuzung
db.colors.aggregate([
{'$project': {
int:{$setIntersection:["$left","$right"]}
}
}
]);
Relative Ergänzung
db.colors.aggregate([
{'$project': {
diff:{$setDifference:["$left","$right"]}
}
}
]);
Symmetrischer Unterschied
db.colors.aggregate([
{'$project': {
diff:{$setUnion:[{$setDifference:["$left","$right"]}, {$setDifference:["$right","$left"]}]}
}
}
]);
Hinweis:Es gibt ein Ticket Anfordern einer symmetrischen Differenz, die als Kernmerkmal hinzugefügt wird, anstatt die Vereinigung von zwei Satzdifferenzen durchführen zu müssen.