sql >> Databáze >  >> NoSQL >> MongoDB

Aktualizujte mnoho dokumentů v mongoDB s různými hodnotami

Tuto aktualizaci je nejlepší provést pomocí bulkWrite API. Zvažte následující příklad pro výše uvedené dva dokumenty:

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} zajišťuje, že dokumenty budou na serveru aktualizovány sériově, v uvedeném pořadí, a tedy pokud dojde k chybě, budou všechny zbývající aktualizace přerušeny. {"w": 1} volba určuje problém zápisu, přičemž 1 je potvrzením požadavku, že operace zápisu se rozšířila do samostatného mongoda nebo primárního v sadě replik.

Pro MongoDB >= 2.6 a <= 3.0 , použijte Bulk Operations API takto:

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. Co to znamená umístit pracovní sadu do paměti RAM pro MongoDB?

  2. Export dat z Mongo/Cassandra do HDFS pomocí Apache Sqoop

  3. Chyba sběrnice na Mongodb MongoClient.connect() pro Raspberry Pi ARM

  4. Předplatitelé a vydavatelé Redis pub sub max