Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Tìm document hiện tại và trước đó trong MongoDB

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.