Bộ sưu tập có giới hạn là các bộ sưu tập có kích thước cố định sẽ tự động xóa các tài liệu cũ nhất (dựa trên thứ tự chèn) bằng cách ghi đè chúng khi bộ sưu tập đầy.
Các bộ sưu tập có giới hạn khái niệm là một bộ đệm tròn chứ không phải là một hàng đợi.
Điều này nghe có vẻ không phù hợp với trường hợp sử dụng của thông tin đơn đặt hàng liên tục - không có "móc" nào để chèn lại tài liệu vào bộ sưu tập có giới hạn khi chúng bị xóa và nếu bộ sưu tập có giới hạn của bạn quá nhỏ, bạn có thể ghi đè tài liệu trước khi chúng được xử lý.
Tôi nghĩ bạn thực sự muốn sử dụng một bộ sưu tập bình thường (không giới hạn).
Xóa các đơn đặt hàng cũ dựa trên trạng thái
Nếu bạn muốn xóa đơn đặt hàng dựa trên một số giá trị trạng thái, bạn nên xử lý điều này trong mã ứng dụng của mình (ví dụ:khi đơn đặt hàng chuyển từ trạng thái "Đang chờ xử lý" sang "Đã xử lý", hãy thực hiện bất kỳ thao tác dọn dẹp nào được yêu cầu).
Xóa các đơn đặt hàng cũ / hết hạn theo thời gian
Nếu bạn muốn tự động xóa các đơn đặt hàng cũ / hết hạn vào một thời điểm cụ thể, thì một cách tốt là sử dụng một bộ sưu tập bình thường với hết hạn Time-To-Live (TTL) ở cấp độ tài liệu , ví dụ:
db.orders.ensureIndex( { "expireAt": 1 }, { expireAfterSeconds: 0 } )
Sau đó, bạn có thể đặt (hoặc gia hạn) thời hạn cho mỗi tài liệu đặt hàng dựa trên expireAt
ngày. Lưu ý rằng đây có thể không phải là một tùy chọn phù hợp nếu bạn cần kiểm tra cả expireAt
giá trị và trường trạng thái (TTL hết hạn chỉ dựa trên chỉ mục ngày được cung cấp).