Como usar a agregação do MongoDB para operações com conjuntos de propósito geral (união, interseção, diferença)
Eu me deparei com alguma implementação de propósito especial de operações de conjunto, mas nada para o caso geral. Qual é o caso geral para executar operações de conjunto (especificamente intersecção, união, diferença simétrica). Isso é mais fácil de descobrir usando javascript em um $ where ou map reduce, mas eu quero saber como fazer isso em agregação para obter desempenho nativo.
A melhor maneira de ilustrar essa questão é com um exemplo. Digamos que eu tenha um registro com 2 matrizes / conjuntos:
db.colors.insert({
_id: 1,
left : ['red', 'green'],
right : ['green', 'blue']
});
Eu quero encontrar a união, intersecção e diferença das matrizes 'esquerda' e 'direita'. Melhor ainda, pictorially eu quero encontrar:
União - "[vermelho", "verde", "azul"]
Interseção - "[verde"]
Diferença simétrica - "[vermelho", "azul"]