sql >> Database >  >> NoSQL >> MongoDB

Werk veel documenten in mongoDB bij met verschillende waarden

U kunt deze update het beste doen met de bulkWrite API. Beschouw het volgende voorbeeld voor de bovenstaande twee documenten:

var bulkUpdateOps = [
    {
        "updateOne": {
            "filter": { "reference": 10 },
            "update": { "$push": { "history": history1 } }
        }
    },
    {
        "updateOne": {
            "filter": { "reference": 20 },
            "update": { "$push": { "history": history2 } }
        }
    }
];

mongo.financeCollection.bulkWrite(bulkUpdateOps, 
    {"ordered": true, "w": 1}, function(err, result) {
        // do something with result
        callback(err); 
    }

De {"ordered": true, "w": 1} zorgt ervoor dat de documenten serieel worden bijgewerkt op de server, in de opgegeven volgorde en dat als er een fout optreedt, alle resterende updates worden afgebroken. De {"w": 1} optie bepaalt het schrijfprobleem, waarbij 1 een verzoekbevestiging is dat de schrijfbewerking is doorgegeven aan de zelfstandige mongod of de primaire in een replicaset.

Voor MongoDB >= 2.6 en <= 3.0 , gebruik de Bulk Opeartions API als volgt:

var bulkUpdateOps = mongo.financeCollection.initializeOrderedBulkOp();
bulkUpdateOps
    .find({ "reference": 10 })
    .updateOne({
        "$push": { "history": history1 }
    });
bulkUpdateOps
    .find({ "reference": 20 })
    .updateOne({
        "$push": { "history": history2 }
    });

bulk.execute(function(err, result){
    bulkUpdateOps = mongo.financeCollection.initializeOrderedBulkOp();
    // do something with result
    callback(err);
});



  1. Waarom krijg ik een niet-herkend argument tot nu toeFromString:'format' ondanks dat ik db-versie> 3.6 heb die de aggregatie ondersteunt

  2. Hoe te controleren of Mongo db op Mac draait?

  3. Spring Redis - Configuratie lezen uit bestand application.properties

  4. MongoDB genest OF/EN waar?