Để tạo một câu chuyện dài ngắn:MongoDB có một linh hoạt lược đồ. Chỉ cần thêm trường ngày. Vì các mục cũ hơn không có nó, chúng không thể là mục cuối cùng.
Hãy gọi trường đó là mtime
.
Vì vậy, sau khi thêm trường ngày vào định nghĩa giản đồ của bạn, chúng tôi tạo chỉ mục theo thứ tự giảm dần trên trường mới:
db.yourCollction.createIndex({mtime:-1})
Giờ đây, việc tìm kiếm thời gian cuối cùng cho một bộ sưu tập thật dễ dàng:
db.yourCollection.find({"mtime":{"$exists":true}}).sort({"mtime":-1}).limit(1)
Làm điều này cho mọi bộ sưu tập. Khi truy vấn trên không trả về giá trị trong khung thời gian bạn đã xác định để xóa một bộ sưu tập, chỉ cần loại bỏ nó, vì nó chưa được sửa đổi kể từ khi bạn giới thiệu trường mtime.
Sau khi bộ sưu tập của bạn được dọn dẹp, bạn có thể xóa mtime
từ định nghĩa giản đồ của bạn. Để xóa nó khỏi tài liệu, bạn có thể chạy một truy vấn đơn giản:
db.yourCollection.update(
{ "mtime":{ $exists:true} },
{ "$unset":{ "mtime":""} },
{ multi: true}
)