Dùng sort() và limit() để lấy document mới nhất và liền trước
Kết hợp sort({_id: -1}) (mới nhất trước) với limit(2) để lấy 2 document gần nhất. Lọc thêm điều kiện $lte nếu cần.
Dữ liệu có id tăng dần
> db.demo360.insertOne({id: 101, "Name": "Chris"});
> db.demo360.insertOne({id: 102, "Name": "David"});
> db.demo360.insertOne({id: 103, "Name": "Bob"});
> db.demo360.insertOne({id: 104, "Name": "Mike"});
Tìm document id <= 102, lấy 2 document mới nhất
> db.demo360.find(
{ id: { $lte: 102 } },
{ id: 1, Name: 1 }
).sort({ _id: -1 }).limit(2);
Kết quả
{ "_id": ObjectId("..."), "id": 102, "Name": "David" } // Current
{ "_id": ObjectId("..."), "id": 101, "Name": "Chris" } // Previous
Ứng dụng: Phân trang, so sánh phiên bản, audit log. Lưu ý: _id ObjectId chứa timestamp, sắp xếp theo _id tương đương sắp xếp theo thời gian tạo.