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

Jak mohu narušit více objektů pomocí MongoDB a Node.js?

Použijte bulkWrite API pro provádění aktualizací:

var bulkUpdateOps = genres.map(function(doc) {
    return {
        "updateOne": {
            "filter": { "_id": doc.id },
            "update": { "$set": { "name": doc.name } },
            "upsert": true
        }
    };
});

db.collection('genres').bulkWrite(bulkUpdateOps, function(err, r) {
    // do something with result
})

Pokud máte co do činění s většími poli, tj.> 1000, zvažte odesílání zápisů na server v dávkách po 500, což vám poskytuje lepší výkon, protože na server neposíláte každý požadavek, ale pouze jednou za každých 500 požadavků:

var bulkUpdateOps = [],
    counter = 0;

genres.forEach(function(doc) {
    bulkUpdateOps.push({
        "updateOne": {
            "filter": { "_id": doc.id },
            "update": { "$set": { "name": doc.name } },
            "upsert": true
        }
    });
    counter++;

    if (counter % 500 == 0) {
        db.collection('genres').bulkWrite(bulkUpdateOps, function(err, r) {
            // do something with result
        });
        bulkUpdateOps = [];
    }
})

if (counter % 500 != 0) {
    db.collection('genres').bulkWrite(bulkUpdateOps, function(err, r) {
        // do something with the result
    });
}


  1. Zpětné volání při provozu MongoDB s Node.js

  2. Klíče StackExchange Redis ChannelPrefix Not Scoping Keys

  3. dotaz na dokumenty, které závisí na hodnotách jiných dokumentů v mongodb

  4. Získejte počet loglevel pro každé jméno