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

วิธีกรองข้อมูลตามรูปแบบวันที่เฉพาะใน MongoDB


การใช้ $dateToString สำหรับกรองวันที่

เมื่อต้องการกรองเอกสารตามรูปแบบวันที่เฉพาะ (เช่น YYYY-MM-DD) ให้ใช้ $dateToString แปลง ISODate เป็นสตริงก่อน แล้วค่อย match

ตัวอย่างข้อมูล

> db.demo433.insertOne({ "DueDate": new Date("2019-11-23") });
> db.demo433.insertOne({ "DueDate": new Date("2020-01-03") });

แสดงข้อมูล

> db.demo433.find();

ผลลัพธ์:

{ "_id": ObjectId(...), "DueDate": ISODate("2019-11-23T00:00:00Z") }
{ "_id": ObjectId(...), "DueDate": ISODate("2020-01-03T00:00:00Z") }

Query กรองวันที่ 2020-01-03

> db.demo433.aggregate([
  { $addFields: { stringDate: { $dateToString: { format: "%Y-%m-%d", date: "$DueDate" } } } },
  { $match: { "stringDate": "2020-01-03" } },
  { $project: { "stringDate": 0 } }
])

ผลลัพธ์

{ "_id": ObjectId("5e771290bbc41e36cc3cae92"), "DueDate": ISODate("2020-01-03T00:00:00Z") }

รูปแบบวันที่ที่ใช้ได้

  • %Y - ปี 4 หลัก
  • %m - เดือน 2 หลัก
  • %d - วัน 2 หลัก
  • %H, %M, %S - ชั่วโมง นาที วินาที

หมายเหตุ

วิธีนี้เหมาะสำหรับการกรองตามวันที่เท่านั้น (ไม่รวมเวลา) หากต้องการกรองช่วงเวลา ควรใช้ $gte/$lte กับ ISODate โดยตรงเพื่อประสิทธิภาพดียิ่งขึ้น