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

ค้นหาเอกสารที่สร้างก่อนวันที่กำหนดใน MongoDB

ใช้โอเปอเรเตอร์ $lt (Less Than) กับวันที่

เพื่อหาเอกสารที่มีฟิลด์วันที่ (Date/ISODate) น้อยกว่าค่าที่กำหนด ใช้ $lt ในคิวรี

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

> db.beforeSpecifyDateDemo.insertOne({"UserLoginDate": new ISODate('2016-03-21')});
> db.beforeSpecifyDateDemo.insertOne({"UserLoginDate": new ISODate('2016-05-11')});
> db.beforeSpecifyDateDemo.insertOne({"UserLoginDate": new ISODate('2017-01-31')});
> db.beforeSpecifyDateDemo.insertOne({"UserLoginDate": new ISODate('2018-05-15')});
> db.beforeSpecifyDateDemo.insertOne({"UserLoginDate": new ISODate('2019-04-01')});

คิวรี: หาเอกสารที่ UserLoginDate ก่อน 2017-01-31

> db.beforeSpecifyDateDemo.find({UserLoginDate: { "$lt": ISODate("2017-01-31") }});

ผลลัพธ์

{ "_id" : ObjectId("5cbd91e4de8cc557214c0e0d"), "UserLoginDate" : ISODate("2016-03-21T00:00:00Z") }
{ "_id" : ObjectId("5cbd91ecde8cc557214c0e0e"), "UserLoginDate" : ISODate("2016-05-11T00:00:00Z") }

โอเปอเรเตอร์เปรียบเทียบวันที่ที่นิยมใช้

โอเปอเรเตอร์ความหมายตัวอย่าง
$ltน้อยกว่า (ก่อนหน้า){ date: { $lt: ISODate("2023-01-01") } }
$lteน้อยกว่าหรือเท่ากับ{ date: { $lte: ISODate("2023-01-01") } }
$gtมากกว่า (หลังจาก){ date: { $gt: ISODate("2023-01-01") } }
$gteมากกว่าหรือเท่ากับ{ date: { $gte: ISODate("2023-01-01") } }

เคล็ดลับ

  • ใช้ ISODate() เพื่อสร้างวันที่มาตรฐาน UTC
  • สร้างดัชนี (Index) บนฟิลด์วันที่เพื่อประสิทธิภาพการคิวรี
  • MongoDB เก็บวันที่เป็น UTC ตลอดเวลา