MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak mogę upsertować wiele obiektów za pomocą MongoDB i Node.js?

Użyj bulkWrite API do przeprowadzania aktualizacji:

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

Jeśli masz do czynienia z większymi tablicami, tj.> 1000, rozważ wysyłanie zapisów do serwera w partiach po 500, co zapewnia lepszą wydajność, ponieważ nie wysyłasz każdego żądania do serwera, tylko raz na 500 żądań:

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Brak dostępnego widoku niejawnego

  2. Użyj createView z allowDiskUse

  3. Obsługa transakcji w MongoDB

  4. Uzyskaj _id wstawionego dokumentu w bazie danych Mongo w NodeJS

  5. Deserializacja interfejsu w MongoDB przy użyciu C# - Nieznana wartość dyskryminatora