Само версия 2.6+:
От версия 2.6 на MongoDB това стана много по-лесно. Сега можете да направите следното, за да разрешите този проблем:
Съюз
db.colors.aggregate([
{'$project': {
union:{$setUnion:["$left","$right"]}
}
}
]);
Кръстовище
db.colors.aggregate([
{'$project': {
int:{$setIntersection:["$left","$right"]}
}
}
]);
Относително допълнение
db.colors.aggregate([
{'$project': {
diff:{$setDifference:["$left","$right"]}
}
}
]);
Симетрична разлика
db.colors.aggregate([
{'$project': {
diff:{$setUnion:[{$setDifference:["$left","$right"]}, {$setDifference:["$right","$left"]}]}
}
}
]);
Забележка:Има тикет изисквайки симетрична разлика да бъде добавена като основна характеристика, вместо да се налага да се прави обединение на две множествени разлики.