MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Bagaimana cara menggunakan penyisipan massal yang tidak berurutan dengan Mongoskin?

Anda dapat melakukannya tetapi Anda perlu mengubah konvensi pemanggilan untuk melakukan ini karena hanya formulir "panggilan balik" yang akan benar-benar mengembalikan objek koleksi dari mana .initializeUnorderedBulkOp() metode dapat dipanggil. Ada juga beberapa perbedaan penggunaan cara kerja ini menurut Anda:

var dbURI = urigoeshere;
var db = mongo.db(dbURI, {safe:true});
db.collection('collection',function(err,collection) {
    var bulk = collection.initializeUnorderedBulkOp();
    count = 0;

    for (var i = 0; i < 200000; i++) {
        bulk.insert({number: i});
        count++;

        if ( count % 1000 == 0 )
            bulk.execute(function(err,result) {
               // maybe do something with results
               bulk = collection.initializeUnorderedBulkOp(); // reset after execute
            });      

    });

    // If your loop was not a round divisor of 1000
    if ( count % 1000 != 0 )
        bulk.execute(function(err,result) {
          // maybe do something here
        });
});

Jadi metode "Bulk" yang sebenarnya sendiri tidak memerlukan panggilan balik dan berfungsi persis seperti yang ditunjukkan dalam dokumentasi. Eksekusinya adalah .execute() yang sebenarnya mengirimkan pernyataan ke server.

Meskipun driver akan menyelesaikannya untuk Anda, mungkin bukan ide yang baik untuk mengantri terlalu banyak operasi sebelum memanggil eksekusi. Ini pada dasarnya menumpuk di memori, dan meskipun driver hanya akan mengirim 1000 batch pada satu waktu (ini adalah batas server serta batch lengkap berada di bawah 16MB), Anda mungkin ingin sedikit lebih banyak kontrol di sini, setidaknya untuk batasi penggunaan memori.

Itulah inti dari tes modulo seperti yang ditunjukkan, tetapi jika memori untuk membangun operasi dan objek respons yang mungkin sangat besar tidak menjadi masalah bagi Anda, maka Anda dapat terus mengantre operasi dan memanggil .execute() sekali.

"Respons" dalam format yang sama seperti yang diberikan dalam dokumentasi untuk BulkWriteResult.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB atau CouchDB - cocok untuk produksi?

  2. Render tampilan HTML dasar?

  3. menggunakan $and dengan $match di mongodb

  4. Apakah ada cara untuk mencegah MongoDB menambahkan bentuk jamak ke nama koleksi?

  5. Buat Cluster Database di Cloud Dengan MongoDB Atlas