MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Chèn hàng loạt Mongoose (mongodb)?

Model.create () so với Model.collection.insert ():cách tiếp cận nhanh hơn

Model.create() là một cách không tốt để thực hiện chèn nếu bạn đang xử lý một số lượng lớn rất lớn. Nó sẽ rất chậm . Trong trường hợp đó, bạn nên sử dụng Model.collection.insert , hoạt động tốt hơn nhiều . Tùy thuộc vào kích thước của hàng loạt, Model.create() thậm chí sẽ sụp đổ! Đã thử với một triệu tài liệu, không có may mắn. Sử dụng Model.collection.insert chỉ mất vài giây.

Model.collection.insert(docs, options, callback)
  • docs là mảng tài liệu sẽ được chèn vào;
  • options là một đối tượng cấu hình tùy chọn - xem tài liệu
  • callback(err, docs) sẽ được gọi sau khi tất cả các tài liệu được lưu hoặc xảy ra lỗi. Về thành công, tài liệu là mảng tài liệu tồn tại lâu dài.

Như tác giả của Mongoose đã chỉ ra ở đây, phương pháp này sẽ bỏ qua bất kỳ quy trình xác thực nào và truy cập trực tiếp vào trình điều khiển Mongo. Đó là một sự đánh đổi bạn phải thực hiện vì bạn đang xử lý một lượng lớn dữ liệu, nếu không bạn sẽ không thể chèn nó vào cơ sở dữ liệu của mình (hãy nhớ rằng chúng ta đang nói đến hàng trăm nghìn tài liệu ở đây).

Một ví dụ đơn giản

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);
    }
}

Cập nhật 2019-06-22 :mặc dù insert() vẫn có thể được sử dụng tốt, nó đã không được chấp nhận thay vì insertMany() . Các tham số hoàn toàn giống nhau, vì vậy bạn chỉ có thể sử dụng nó như một sự thay thế thả vào và mọi thứ sẽ hoạt động tốt (tốt, giá trị trả về hơi khác một chút, nhưng có thể bạn đang không sử dụng nó).

Tham khảo

  • Tài liệu Mongo
  • Aaron Heckman trên Google Groups thảo luận về việc chèn số lượng lớn


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách viết truy vấn union trong mongoDB

  2. Làm cách nào để tạo DB cho vùng chứa MongoDB khi khởi động?

  3. Cách đặt giới hạn cho kích thước mảng trong lược đồ Mongoose

  4. Các truy vấn tổng hợp trung bình trong Meteor

  5. Làm thế nào để cài đặt MongoDB trên hệ thống Windows?