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

Sisipan batch luwak (mongodb)?

Model.create() vs Model.collection.insert():pendekatan yang lebih cepat

Model.create() adalah cara yang buruk untuk melakukan penyisipan jika Anda berurusan dengan jumlah yang sangat besar. Ini akan menjadi sangat lambat . Dalam hal ini Anda harus menggunakan Model.collection.insert , yang berkinerja jauh lebih baik . Bergantung pada ukuran massal, Model.create() bahkan akan jatuh! Mencoba dengan sejuta dokumen, tidak berhasil. Menggunakan Model.collection.insert hanya butuh beberapa detik.

Model.collection.insert(docs, options, callback)
  • docs adalah larik dokumen yang akan disisipkan;
  • options adalah objek konfigurasi opsional - lihat dokumen
  • callback(err, docs) akan dipanggil setelah semua dokumen disimpan atau terjadi kesalahan. Jika berhasil, dokumen adalah kumpulan dokumen yang bertahan.

Seperti yang ditunjukkan oleh penulis Mongoose di sini, metode ini akan melewati prosedur validasi apa pun dan mengakses driver Mongo secara langsung. Ini adalah trade-off yang harus Anda lakukan karena Anda menangani sejumlah besar data, jika tidak, Anda tidak akan dapat memasukkannya ke database Anda sama sekali (ingat kita berbicara tentang ratusan ribu dokumen di sini).

Contoh sederhana

var Potato = mongoose.model('Potato', PotatoSchema);

var potatoBag = [/* a humongous amount of potato objects */];

Potato.collection.insert(potatoBag, onInsert);

function onInsert(err, docs) {
    if (err) {
        // TODO: handle error
    } else {
        console.info('%d potatoes were successfully stored.', docs.length);
    }
}

Pembaruan 22-06-2019 :meskipun insert() masih dapat digunakan dengan baik, sudah tidak digunakan lagi karena insertMany() . Parameternya persis sama, jadi Anda bisa menggunakannya sebagai pengganti drop-in dan semuanya akan berfungsi dengan baik (baik, nilai pengembaliannya sedikit berbeda, tetapi Anda mungkin tidak menggunakannya).

Referensi

  • Dokumentasi Mongo
  • Aaron Heckman di Google Grup membahas penyisipan massal


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Agregat Mongodb (hitungan) di beberapa bidang secara bersamaan

  2. Bagaimana cara memperbarui jika ada jika tidak, masukkan dokumen baru?

  3. Update/upser luwak?

  4. Mengurutkan mongodb dengan cara yang tidak peka huruf besar-kecil

  5. Spring Data MongoDB – Indeks, Anotasi, dan Konverter