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

Không thể khóa tài liệu mongodb. Nếu tôi cần thì sao?

Này, cách duy nhất mà tôi nghĩ bây giờ là thêm một tham số trạng thái và sử dụng thao tác findAndModify (), cho phép bạn sửa đổi nguyên tử một tài liệu. Nó chậm hơn một chút, nhưng nên thực hiện thủ thuật.

Vì vậy, giả sử bạn thêm một thuộc tính trạng thái và khi bạn truy xuất tài liệu, hãy thay đổi trạng thái từ "IDLE" thành "PROCESSING". Sau đó, bạn cập nhật tài liệu và lưu lại vào bộ sưu tập, cập nhật trạng thái thành "IDLE" một lần nữa.

Ví dụ về mã:

var doc = db.runCommand({
              "findAndModify" : "COLLECTION_NAME",
              "query" : {"_id": "ID_DOCUMENT", "status" : "IDLE"},
              "update" : {"$set" : {"status" : "RUNNING"} }
}).value

Thay đổi COLLECTION_NAME và ID_DOCUMENT thành một giá trị thích hợp. Theo mặc định findAndModify () trả về giá trị cũ, có nghĩa là giá trị trạng thái sẽ vẫn là IDLE ở phía máy khách. Vì vậy, khi bạn cập nhật xong, chỉ cần lưu / cập nhật lại mọi thứ.

Điều duy nhất bạn cần lưu ý là bạn chỉ có thể sửa đổi một tài liệu tại một thời điểm.

Hy vọng nó sẽ hữu ích.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Thuộc tính Mongoengine create_time trong Tài liệu

  2. Xác suất va chạm của ObjectId và UUID trong một hệ thống phân tán lớn

  3. Không thể tạo / mở tệp khóa:/data/mongod.lock errno:13 Quyền bị từ chối

  4. Giám sát cơ sở dữ liệu với ClusterControl

  5. Thêm / trừ ngày vào ISODate trong MongoDB Shell