sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man använder MongoDB-aggregering för uppsättningsoperationer för allmänna ändamål (union, korsning, skillnad)

Endast version 2.6+:

Från och med version 2.6 av MongoDB har detta blivit mycket mycket enklare. Du kan nu göra följande för att lösa det här problemet:

Fackförening

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

Korsning

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

Relativt komplement

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

Symmetrisk skillnad

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

Obs! Det finns en biljett begär att symmetrisk skillnad ska läggas till som en kärnfunktion snarare än att behöva göra en sammanslagning av två uppsättningsskillnader.



  1. Många till många med Mongoose

  2. mongoose - 'spara'-metoden finns inte

  3. Återuppkoppla ECONNREFUSED i NodeJS i Kubernetes-klustret

  4. Operatör $arrayElemAt i aggregering med Mongo <3.2