MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como usar a agregação do MongoDB para operações de conjunto de propósito geral (união, interseção, diferença)


Somente versão 2.6+:

A partir da versão 2.6 do MongoDB, isso ficou muito mais fácil. Agora você pode fazer o seguinte para resolver esse problema:

União
db.colors.aggregate([
    {'$project': {  
                    union:{$setUnion:["$left","$right"]}
                 }
    }
]);

Intersecção
db.colors.aggregate([
    {'$project': {  
                  int:{$setIntersection:["$left","$right"]}
                 }
    }
]);

Complemento Relativo
db.colors.aggregate([
    {'$project': {  
                    diff:{$setDifference:["$left","$right"]}
                 }
    }
]);

Diferença simétrica
db.colors.aggregate([
    {'$project': {  
                    diff:{$setUnion:[{$setDifference:["$left","$right"]}, {$setDifference:["$right","$left"]}]}
                 }
    }
]);

Observação:há um bilhete solicitar que a diferença simétrica seja adicionada como um recurso principal, em vez de ter que fazer a união de duas diferenças de conjunto.