sql >> Database >  >> NoSQL >> MongoDB

MongoDB-aggregatie gebruiken voor setbewerkingen voor algemene doeleinden (vereniging, kruising, verschil)

Alleen versie 2.6+:

Vanaf versie 2.6 van MongoDB is dit een stuk eenvoudiger geworden. U kunt nu het volgende doen om dit probleem op te lossen:

Unie

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

Kruispunt

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

Relatieve aanvulling

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

Symetrisch verschil

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

Opmerking:er is een ticket verzoeken om een ​​symmetrisch verschil toe te voegen als een kernfunctie in plaats van het samenvoegen van twee ingestelde verschillen.



  1. Hoe kan ik deze gedistribueerde wachtrij met één gelijktijdigheid implementeren in elk MQ-platform?

  2. MongoDb-querymatrix met null-waarden

  3. Wordt een verbinding met MongoDB automatisch gesloten op process.exit()?

  4. pymongo.errors.CursorNotFound:cursor id '...' niet geldig op server