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

Sådan bruger du MongoDB-aggregering til generelle formålssætoperationer (union, kryds, forskel)

Kun version 2.6+:

Fra version 2.6 af MongoDB er dette blevet meget meget nemmere. Du kan nu gøre følgende for at løse dette problem:

Union

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

Krydsningspunkt

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

Relativt komplement

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

Symmetrisk forskel

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

Bemærk:Der er en billet anmoder om, at symmetrisk forskel tilføjes som en kernefunktion i stedet for at skulle kombinere to sæt forskelle.



  1. Sanne standarder for MongoDB på OSX?

  2. mongoose brugerdefineret validering ved hjælp af 2 felter

  3. Hvordan kan man omgå manglen på transaktioner i MongoDB?

  4. Hvordan gemmer man et billede i node-backend?