Как использовать агрегацию MongoDB для операций над множествами общего назначения (объединение, пересечение, разность)
Я встречал некоторую специальную реализацию операций над множествами, но ничего для общего случая. Каков общий случай выполнения операций над множествами (в частности, пересечение, объединение, симметричная разность). Это легче понять, используя javascript в $ where или map уменьшить, но я хочу знать, как сделать это в агрегации, чтобы получить собственную производительность.
Лучший способ проиллюстрировать этот вопрос на примере. Скажем, у меня есть запись с 2 массивами / наборами:
db.colors.insert({
_id: 1,
left : ['red', 'green'],
right : ['green', 'blue']
});
Я хочу найти объединение, пересечение и различие «левого» и «правого» массивов. Еще лучше, наглядно хочу найти:
союз -> ['красный', 'зеленый', 'синий']
пересечение -> ['Зеленый']
Симметричная разница -> ['красный', 'синий']