MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment utiliser l'agrégation MongoDB pour les opérations d'ensemble à usage général (union, intersection, différence)

Version 2.6+ uniquement :

Depuis la version 2.6 de MongoDB, cela est devenu beaucoup plus facile. Vous pouvez maintenant effectuer les opérations suivantes pour résoudre ce problème :

Union

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

Intersection

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

Complément relatif

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

Différence symétrique

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

Remarque :Il existe un ticket demander que la différence symétrique soit ajoutée en tant que fonctionnalité principale plutôt que d'avoir à faire l'union de deux différences définies.