MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come utilizzare l'aggregazione MongoDB per operazioni di set di uso generale (unione, intersezione, differenza)

Solo versione 2.6+:

A partire dalla versione 2.6 di MongoDB, questo è diventato molto molto più semplice. Ora puoi fare quanto segue per risolvere questo problema:

Unione

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

Incrocio

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

Complemento relativo

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

Differenza simmetrica

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

Nota:esiste un biglietto richiedere che la differenza simmetrica venga aggiunta come caratteristica principale piuttosto che dover fare l'unione di due differenze di insieme.