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

Wstawianie zbiorcze w MongoDB przy użyciu mongoose

Możesz użyć insertMany() metoda tutaj, jeśli używasz najnowszej wersji Mongoose 4.4.X i większe, które zasadniczo używają Model.collection.insertMany() pod maską, a sterownik może obsłużyć zrównoleglenie >= 1000 dokumenty dla Ciebie.

myData = [Obj1, Obj2, Obj3.......];
Collection1.insertMany(myData, function(error, docs) {});

lub używanie obietnic do lepszej obsługi błędów

Collection1.insertMany(myData)
    .then(function(docs) {
         // do something with docs
    })
    .catch(function(err) {
        // error handling here
    });

Działa poprzez tworzenie wielu dokumentów, wywołuje .validate() na nich równolegle, a następnie wywołuje insertMany() w wyniku toObject({ virtuals: false }); każdego dokumentu.Chociaż insertMany() nie wyzwala zaczepów przed zapisem, ma lepszą wydajność, ponieważ wykonuje tylko 1 podróż w obie strony do serwera zamiast 1 dla każdego dokumentu.

Dla wersji Mongoose ~3.8.8, ~3.8.22, 4.x które obsługują serwer MongoDB >=2.6.x , możesz użyć Bulk API w następujący sposób

var bulk = Collection1.collection.initializeOrderedBulkOp(),
    counter = 0;

myData.forEach(function(doc) {
    bulk.insert(doc);

    counter++;
    if (counter % 500 == 0) {
        bulk.execute(function(err, r) {
           // do something with the result
           bulk = Collection1.collection.initializeOrderedBulkOp();
           counter = 0;
        });
    }
});

// Catch any docs in the queue under or over the 500's
if (counter > 0) {
    bulk.execute(function(err,result) {
       // do something with the result here
    });
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose zapytanie według daty

  2. Trzeci argument przy tworzeniu modelu w MongooseJS

  3. APScheduler uruchamia funkcję asynchroniczną w Tornado Pythonie

  4. MongoDB $anyElementTrue

  5. Problem z relacjami hasMany w Laravel 5.3 + biblioteka MongoDB 'jenssegers/laravel-mongodb'