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