MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie kann ich mehrere Objekte mit MongoDB und Node.js einfügen?

Verwenden Sie bulkWrite API zur Durchführung der Updates:

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

Wenn Sie es mit größeren Arrays zu tun haben, dh> 1000, sollten Sie die Schreibvorgänge in Stapeln von 500 an den Server senden, wodurch Sie eine bessere Leistung erzielen, da Sie nicht jede Anfrage an den Server senden, sondern nur einmal alle 500 Anfragen:

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