sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur kan jag rubba flera objekt med MongoDB &Node.js?

Använd bulkWrite API för att utföra uppdateringarna:

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

Om du har att göra med större arrayer, dvs> 1000, överväg då att skicka skrivningarna till servern i omgångar om 500, vilket ger dig bättre prestanda eftersom du inte skickar varje begäran till servern, bara en gång av 500 förfrågningar:

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. Hur uppdaterar jag delvis ett objekt i MongoDB så att det nya objektet överlappar / smälter samman med det befintliga

  2. Hur installerar man php-redis-tillägget med den officiella PHP Docker-avbildningsmetoden?

  3. Mongodb aggregat, Hur räknar man dokument efter intervallkriterier?

  4. Maven kör inte med Spigot