Как использовать агрегацию MongoDB для операций над множествами общего назначения (объединение, пересечение, разность)

Я встречал некоторую специальную реализацию операций над множествами, но ничего для общего случая. Каков общий случай выполнения операций над множествами (в частности, пересечение, объединение, симметричная разность). Это легче понять, используя javascript в $ where или map уменьшить, но я хочу знать, как сделать это в агрегации, чтобы получить собственную производительность.

Лучший способ проиллюстрировать этот вопрос на примере. Скажем, у меня есть запись с 2 массивами / наборами:

db.colors.insert({
    _id: 1,
    left : ['red', 'green'],
    right : ['green', 'blue']
});

Я хочу найти объединение, пересечение и различие «левого» и «правого» массивов. Еще лучше, наглядно хочу найти:

союз -> ['красный', 'зеленый', 'синий']

пересечение -> ['Зеленый']

Симметричная разница -> ['красный', 'синий']

Ответы на вопрос(2)

Ваш ответ на вопрос