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

Tìm kiếm ngày trong khoảng hai ngày trong MongoDB

Để 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.