Để tìm tài liệu có trường ngày trong khoảng (range), sử dụng $gte (lớn hơn hoặc bằng) và $lt (nhỏ hơn). Tạo collection:
> db.demo524.insertOne({"EndDate":new ISODate("2020-01-19")});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8adbe5437efc8605595b63") }
> db.demo524.insertOne({"EndDate":new ISODate("2020-01-20")});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8adbec437efc8605595b64") }
> db.demo524.insertOne({"EndDate":new ISODate("2020-12-31")});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8adbf3437efc8605595b65") }
Hiển thị dữ liệu:
> db.demo524.find();
Kết quả (3 ngày khác nhau):
Tìm tài liệu có EndDate từ 2020-01-04 (>=) đến 2020-01-31 (<):
> var first = new ISODate("2020-01-04"); > var last = new ISODate("2020-01-31"); > db.demo524.find({EndDate: {$gte: first, $lt: last}});Kết quả khớp 2 ngày 19 và 20/01/2020:
Các toán tử so sánh ngày:
$gt- lớn hơn (không bao gồm)$gte- lớn hơn hoặc bằng (bao gồm)$lt- nhỏ hơn (không bao gồm)$lte- nhỏ hơn hoặc bằng (bao gồm)
Mẹo: Dùng $lt cho ngày kết thúc (thay vì $lte) để bao gồm toàn bộ ngày cuối (23:59:59.999). Tạo index trên trường ngày để tối ưu truy vấn range.