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

Lưu vào MongoDB trong một vòng lặp

Đó là vì save thực sự là một hoạt động I / O là Async. Bây giờ, for Vòng lặp thực sự là đồng bộ hóa. Hãy nghĩ về nó theo cách này:công cụ JS của bạn thực thi tuần tự từng dòng mà nó nhìn thấy. Giả sử các dòng này được giữ nối tiếp nhau trên một ngăn xếp. Khi nói đến save , nó giữ nó sang một bên trên một ngăn xếp khác (vì nó là một hoạt động I / O, và do đó sẽ mất thời gian) và tiếp tục với phần còn lại của vòng lặp. Hóa ra là engine sẽ chỉ kiểm tra ngăn xếp mới này sau khi nó đã hoàn thành mọi dòng trên ngăn xếp cũ hơn. Do đó, giá trị của biến cats sẽ là mục cuối cùng trong mảng. Do đó, chỉ giá trị cuối cùng được lưu.

Để chống lại thảm kịch này, bạn có thể sử dụng nhiều phương pháp:

  1. Closures - Đọc thêm
  2. Lời hứa - Đọc thêm . Có một thư viện ngọt ngào sẽ quảng cáo trình điều khiển mongo để giúp bạn làm việc dễ dàng hơn.
  3. Trình tạo, v.v. - Đọc thêm . Chưa sẵn sàng cho khung giờ vàng.

Lưu ý về # 2 - Tôi không phải là người đóng góp cho dự án, nhưng làm việc với tác giả. Tôi đã sử dụng thư viện được hơn một năm rồi, nó nhanh và tuyệt vời!



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Chuyển đổi dự phòng cho MySQL Replication (và những thứ khác) - Nó có nên được Tự động hóa không?

  2. Trợ giúp truy vấn MongoDB - truy vấn các giá trị của bất kỳ khóa nào trong một đối tượng con

  3. So sánh giữa 2 trường của một tài liệu trong MongoDB

  4. kết nối với cơ sở dữ liệu atlas mongo

  5. Giới hạn chèn hàng loạt Mongodb trong Python