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

Opdater mange dokumenter i mongoDB med forskellige værdier

Det er bedst at udføre denne opdatering ved hjælp af code>bulkWrite API. Overvej følgende eksempel for de to ovenstående dokumenter:

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} sikrer, at dokumenterne bliver opdateret serielt på serveren i den angivne rækkefølge, og hvis der opstår en fejl, afbrydes alle resterende opdateringer. {"w":1} option bestemmer skriveproblemet, hvor 1 er en anmodningsbekræftelse af, at skriveoperationen har forplantet sig til den selvstændige mongod eller den primære i et replikasæt.

For MongoDB >=2.6 og <=3.0 , brug Bulk Operations API som følger:

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. Applikationen kunne ikke starte (port 8080) ikke tilgængelig

  2. brug global variabel til at dele db mellem moduler

  3. Hvordan bruger man PyMongo med Flask Blueprints?

  4. Fjern underfelter fra mongoDb-dokument