Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

ค้นหาข้อมูลระหว่างสองวันที่ (Date Range) ใน MongoDB

การค้นหาข้อมูลในช่วงวันที่ (date range) ใช้โอเปอเรเตอร์ $gte (greater than or equal) และ $lt (less than)

> 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") }

แสดงข้อมูล:

> db.demo524.find();

คิวรีค้นหาในเดือนมกราคม 2020

> var first = new ISODate("2020-01-04");
> var last = new ISODate("2020-01-31");
> db.demo524.find({EndDate: {$gte: first, $lt: last}});

ผลลัพธ์ - ได้ 2 รายการในเดือนมกราคม:


รูปแบบ Date Range Query

แนวทางปฏิบัติที่ดี

  • ใช้ $gte สำหรับวันเริ่มต้น, $lt สำหรับวันถัดจากวันสุดท้าย (ครอบคลุมทั้งวัน)
  • เก็บวันที่เป็น ISODate (BSON Date) ไม่ใช่ String
  • สร้างดัชนี (index) บนฟิลด์วันที่
เงื่อนไขMongoDB OperatorSQL เทียบเท่า
>= เริ่มต้น$gte>=
> เริ่มต้น$gt>
<= สิ้นสุด$lte<=
< สิ้นสุด$lt<