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

Hvordan kan jeg ophæve flere objekter med MongoDB &Node.js?

Brug bulkWrite API til at udføre opdateringerne:

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

Hvis du har at gøre med større arrays, dvs.> 1000, så overvej at sende skrivningerne til serveren i batches af 500, hvilket giver dig en bedre ydeevne, da du ikke sender hver anmodning til serveren, kun én gang for hver 500 anmodninger:

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. Antal forekomster af streng i et felt på tværs af dokumenter grupperet på et andet felt i MongoDB?

  2. Tillader Redis kun strengrepræsentation, men ikke numerisk værdi

  3. Hvordan kan jeg sortere efter $elemMatch i MongoDB?

  4. Indlejret gruppering med MongoDB