Bạn có thể muốn sử dụng insertMany ()
tại đây nếu bạn đang sử dụng phiên bản Mongoose mới nhất 4.4.X
và cao hơn, về cơ bản sử dụng Model.collection.insertMany ()
dưới mui xe và trình điều khiển có thể xử lý song song > =1000
tài liệu cho bạn.
myData = [Obj1, Obj2, Obj3.......];
Collection1.insertMany(myData, function(error, docs) {});
hoặc sử dụng Promises để xử lý lỗi tốt hơn
Collection1.insertMany(myData)
.then(function(docs) {
// do something with docs
})
.catch(function(err) {
// error handling here
});
Nó hoạt động bằng cách tạo một loạt tài liệu, gọi .validate ()
trên chúng song song và sau đó gọi trình điều khiển cơ bản insertMany ()
trên kết quả của toObject ({virtual:false});
của mỗi tài liệu.
không kích hoạt móc lưu trước, nó có hiệu suất tốt hơn vì nó chỉ thực hiện 1 chuyến khứ hồi đến máy chủ thay vì 1 cho mỗi tài liệu.
Đối với các phiên bản Mongoose ~ 3.8.8, ~ 3.8.22, 4.x
hỗ trợ Máy chủ MongoDB > =2.6.x
, bạn có thể sử dụng API hàng loạt
như sau
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
});
}