Vâng, đây là do thiết kế. MongoDB rõ ràng không cung cấp các phép nối hoặc giao dịch. Xóa + Lưu là một hình thức giao dịch.
Bạn thực sự có hai tùy chọn độ phức tạp thấp ở đây, cả hai đều liên quan đến findAndModify
.
Tùy chọn số 1:một bộ sưu tập duy nhất
Dựa trên mô tả của bạn, về cơ bản bạn đang xây dựng một hàng đợi với một số tính năng bổ sung. Nếu bạn tận dụng một bộ sưu tập thì bạn sử dụng findAndModify
để cập nhật trạng thái của từng mặt hàng khi nó đang được xử lý.
Thật không may, điều đó có nghĩa là bạn sẽ mất điều này: ... rằng bộ sưu tập "đến" có thể được lưu giữ rất nhỏ và nhanh chóng theo cách này .
Tùy chọn số 2:hai bộ sưu tập
Tùy chọn khác về cơ bản là cam kết hai giai đoạn, tận dụng findAndModify
.
Hãy xem tài liệu cho điều này tại đây .
Sau khi một mặt hàng được xử lý trong A bạn đặt một trường để gắn cờ trường đó để xóa. Sau đó, bạn sao chép mục đó sang B . Sau khi được sao chép vào B sau đó, bạn có thể xóa mục khỏi A .