sql >> Databasteknik >  >> NoSQL >> MongoDB

Uppdatera många dokument i mongoDB med olika värden

Bäst att göra den här uppdateringen med bulkWrite API. Betrakta följande exempel för de två ovanstående dokumenten:

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); 
    }

{"ordered": true, "w": 1} säkerställer att dokumenten kommer att uppdateras seriellt på servern, i den ordning som anges och därmed om ett fel uppstår avbryts alla återstående uppdateringar. {"w": 1} alternativet bestämmer skrivproblemet där 1 är en bekräftelse på att skrivoperationen har spridits till den fristående mongoden eller den primära i en replikuppsättning.

För MongoDB >= 2.6 och <= 3.0 , använd Bulk Operations API enligt följande:

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. MongoDB :Ta bort de två sista tecknen från String

  2. Fråga i kapslat dokument i mongodb

  3. Lösning för Bulk FindAndModify i MongoDB

  4. Mongoose JS-frågor kommer alla tillbaka null eller tom