บทความนี้สาธิตการใช้ Operator $lte (Less Than or Equal) ร่วมกับ new Date() เพื่อค้นหาเอกสารที่ฟิลด์วันที่ (ArrivalDate) น้อยกว่าหรือเท่ากับวันที่ปัจจุบัน (Expired)
สร้างข้อมูลตัวอย่าง (วันที่ปัจจุบันสมมติเป็น 2019-05-11)
> db.getDocumentsExpiredDemo.insertOne({"ArrivalDate":new ISODate("2019-05-11")});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd563b17924bb85b3f4893b") }
> db.getDocumentsExpiredDemo.insertOne({"ArrivalDate":new ISODate("2019-01-01")});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd563bf7924bb85b3f4893c") }
> db.getDocumentsExpiredDemo.insertOne({"ArrivalDate":new ISODate("2019-05-10")});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd563ca7924bb85b3f4893d") }
> db.getDocumentsExpiredDemo.insertOne({"ArrivalDate":new ISODate("2019-02-01")});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd563e77924bb85b3f4893e") }
แสดงข้อมูลทั้งหมด
> db.getDocumentsExpiredDemo.find().pretty();
{
"_id" : ObjectId("5cd563b17924bb85b3f4893b"),
"ArrivalDate" : ISODate("2019-05-11T00:00:00Z")
}
{
"_id" : ObjectId("5cd563bf7924bb85b3f4893c"),
"ArrivalDate" : ISODate("2019-01-01T00:00:00Z")
}
{
"_id" : ObjectId("5cd563ca7924bb85b3f4893d"),
"ArrivalDate" : ISODate("2019-05-10T00:00:00Z")
}
{
"_id" : ObjectId("5cd563e77924bb85b3f4893e"),
"ArrivalDate" : ISODate("2019-02-01T00:00:00Z")
}
ค้นหาเอกสารที่ ArrivalDate <= วันนี้ (Expired)
> db.getDocumentsExpiredDemo.find({ "ArrivalDate": { $lte : new Date() } });
ผลลัพธ์ (ไม่รวม 2019-05-11 เพราะเท่ากับวันนี้ แต่ $lte รวมวันนี้ด้วย - ขึ้นอยู่กับเวลาที่รัน)
{
"_id" : ObjectId("5cd563bf7924bb85b3f4893c"),
"ArrivalDate" : ISODate("2019-01-01T00:00:00Z")
}
{
"_id" : ObjectId("5cd563ca7924bb85b3f4893d"),
"ArrivalDate" : ISODate("2019-05-10T00:00:00Z")
}
{
"_id" : ObjectId("5cd563e77924bb85b3f4893e"),
"ArrivalDate" : ISODate("2019-02-01T00:00:00Z")
}
คำอธิบาย
new Date()ใน Mongo Shell คืนค่า DateTime ปัจจุบันของ Server$lte= Less Than or Equal (น้อยกว่าหรือเท่ากับ)- ISODate เก็บเป็น UTC เวลา 00:00:00Z หากรันตอนกลางวัน วันที่เดียวกันจะถือว่า "น้อยกว่า" (ยังไม่ถึงเวลา)
ตัวอย่างเพิ่มเติม: ช่วงวันที่ (Between)
// ระหว่าง 2019-01-01 ถึง 2019-12-31
db.collection.find({
"dateField": {
$gte: new ISODate("2019-01-01"),
$lte: new ISODate("2019-12-31")
}
});
ตัวอย่าง: ไม่นับวันนี้ (Strictly Before Today)
// ใช้ $lt แทน $lte
db.collection.find({ "dateField": { $lt: new Date() } });