MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

So verwenden Sie die MongoDB-Aggregation für allgemeine Mengenoperationen (Vereinigung, Schnittmenge, Differenz)

Nur Version 2.6+:

Ab Version 2.6 von MongoDB ist dies viel einfacher geworden. Sie können dieses Problem jetzt wie folgt lösen:

Gewerkschaft

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

Kreuzung

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

Relative Ergänzung

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

Symmetrischer Unterschied

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

Hinweis:Es gibt ein Ticket Anfordern einer symmetrischen Differenz, die als Kernmerkmal hinzugefügt wird, anstatt die Vereinigung von zwei Satzdifferenzen durchführen zu müssen.