Endast version 2.6+:
Från och med version 2.6 av MongoDB har detta blivit mycket mycket enklare. Du kan nu göra följande för att lösa det här problemet:
Fackförening
db.colors.aggregate([
{'$project': {
union:{$setUnion:["$left","$right"]}
}
}
]);
Korsning
db.colors.aggregate([
{'$project': {
int:{$setIntersection:["$left","$right"]}
}
}
]);
Relativt komplement
db.colors.aggregate([
{'$project': {
diff:{$setDifference:["$left","$right"]}
}
}
]);
Symmetrisk skillnad
db.colors.aggregate([
{'$project': {
diff:{$setUnion:[{$setDifference:["$left","$right"]}, {$setDifference:["$right","$left"]}]}
}
}
]);
Obs! Det finns en biljett begär att symmetrisk skillnad ska läggas till som en kärnfunktion snarare än att behöva göra en sammanslagning av två uppsättningsskillnader.