Anda mungkin ingin menggunakan insertMany()
metode di sini jika Anda menggunakan versi Mongoose terbaru 4.4.X
dan lebih besar, yang pada dasarnya menggunakan Model.collection.insertMany()
di bawah kap dan pengemudi mungkin menangani paralelisasi >= 1000
dokumen untuk Anda.
myData = [Obj1, Obj2, Obj3.......];
Collection1.insertMany(myData, function(error, docs) {});
atau menggunakan Janji untuk penanganan kesalahan yang lebih baik
Collection1.insertMany(myData)
.then(function(docs) {
// do something with docs
})
.catch(function(err) {
// error handling here
});
Ia bekerja dengan membuat sekumpulan dokumen, memanggil .validate()
pada mereka secara paralel, dan kemudian memanggil insertMany()
pada hasil toObject({ virtuals: false });
dari setiap dokumen. Meskipun insertMany()
tidak memicu kait pra-penyimpanan, ia memiliki kinerja yang lebih baik karena hanya melakukan 1 perjalanan pulang pergi ke server daripada 1 untuk setiap dokumen.
Untuk versi luwak ~3.8.8, ~3.8.22, 4.x
yang mendukung Server MongoDB >=2.6.x
, Anda dapat menggunakan Bulk API
sebagai berikut
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
});
}