สมมติว่าคุณบันทึกวันที่ล็อกอินของผู้ใช้ และต้องการนับจำนวนเรคคอร์ดในวันที่เฉพาะ ให้ใช้ตัวดำเนินการ $gte และ $lt ร่วมกับ count() เริ่มต้นด้วยการสร้างคอลเลกชันตัวอย่าง:
> db.findDataByDateDemo.insertOne({"UserName":"John","UserLoginDate":new ISODate("2019-01-31")});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdd8cd7bf3115999ed511ed") }
> db.findDataByDateDemo.insertOne({"UserName":"Larry","UserLoginDate":new ISODate("2019-02-01")});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdd8ce7bf3115999ed511ee") }
> db.findDataByDateDemo.insertOne({"UserName":"Sam","UserLoginDate":new ISODate("2019-05-02")});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdd8cf3bf3115999ed511ef") }
> db.findDataByDateDemo.insertOne({"UserName":"David","UserLoginDate":new ISODate("2019-05-16")});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdd8d00bf3115999ed511f0") }
> db.findDataByDateDemo.insertOne({"UserName":"Carol","UserLoginDate":new ISODate("2019-10-19")});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdd8d0ebf3115999ed511f1") }
แสดงเอกสารทั้งหมด:
> db.findDataByDateDemo.find();
ผลลัพธ์:
{ "_id" : ObjectId("5cdd8cd7bf3115999ed511ed"), "UserName" : "John", "UserLoginDate" : ISODate("2019-01-31T00:00:00Z") }
{ "_id" : ObjectId("5cdd8ce7bf3115999ed511ee"), "UserName" : "Larry", "UserLoginDate" : ISODate("2019-02-01T00:00:00Z") }
{ "_id" : ObjectId("5cdd8cf3bf3115999ed511ef"), "UserName" : "Sam", "UserLoginDate" : ISODate("2019-05-02T00:00:00Z") }
{ "_id" : ObjectId("5cdd8d00bf3115999ed511f0"), "UserName" : "David", "UserLoginDate" : ISODate("2019-05-16T00:00:00Z") }
{ "_id" : ObjectId("5cdd8d0ebf3115999ed511f1"), "UserName" : "Carol", "UserLoginDate" : ISODate("2019-10-19T00:00:00Z") }
คิวรี่หาผู้ใช้ที่ล็อกอินระหว่างวันที่ 2019-05-02 ถึง 2019-05-17 (ใช้ $gte และ $lt):
> db.findDataByDateDemo.count({
"UserLoginDate":{
"$gte": new Date("2019-05-02"),
"$lt": new Date("2019-05-18")
}
});
ผลลัพธ์ (พบ 2 เรคคอร์ด: Sam และ David):
2
หมายเหตุ: การใช้ $gte (มากกว่าหรือเท่ากับ) และ $lt (น้อยกว่า) ร่วมกันเป็นวิธีมาตรฐานในการค้นหาข้อมูลในช่วงวันที่ (date range) ให้แม่นยำที่สุด เพราะครอบคลุมทั้งวันเริ่มต้นและไม่รวมวันสิ้นสุด