MongoDB অগ্রিগেশনে $hour অপারেটর ব্যবহার করে ডেট-টাইম ফিল্ড থেকে ঘন্টা (hour) বের করে নির্দিষ্ট ঘন্টার রেকর্ড ফিল্টার করা যায়।
নমুনা ডেটা তৈরি করা
mongoDbSearchForHoursDemo কালেকশনে চারটি ডকুমেন্ট ইনসার্ট করি যাতে OrderDatetime ফিল্ড থাকে।
> db.mongoDbSearchForHoursDemo.insertOne({"CustomerName":"Larry","OrderDatetime":new ISODate("2019-01-31 09:45:50")});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd6e8a86d78f205348bc62a") }
> db.mongoDbSearchForHoursDemo.insertOne({"CustomerName":"Larry","OrderDatetime":new ISODate("2019-02-21 01:10:01")});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd6e8b86d78f205348bc62b") }
> db.mongoDbSearchForHoursDemo.insertOne({"CustomerName":"Larry","OrderDatetime":new ISODate("2019-04-01 04:10:11")});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd6e8e26d78f205348bc62c") }
> db.mongoDbSearchForHoursDemo.insertOne({"CustomerName":"Larry","OrderDatetime":new ISODate("2019-05-11 08:53:01")});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd6e8f26d78f205348bc62d") }
সকল ডকুমেন্ট দেখানো
> db.mongoDbSearchForHoursDemo.find().pretty();
আউটপুট:
{ "_id" : ObjectId("5cd6e8a86d78f205348bc62a"), "CustomerName" : "Larry", "OrderDatetime" : ISODate("2019-01-31T09:45:50Z") }
{ "_id" : ObjectId("5cd6e8b86d78f205348bc62b"), "CustomerName" : "Larry", "OrderDatetime" : ISODate("2019-02-21T01:10:01Z") }
{ "_id" : ObjectId("5cd6e8e26d78f205348bc62c"), "CustomerName" : "Larry", "OrderDatetime" : ISODate("2019-04-01T04:10:11Z") }
{ "_id" : ObjectId("5cd6e8f26d78f205348bc62d"), "CustomerName" : "Larry", "OrderDatetime" : ISODate("2019-05-11T08:53:01Z") }
নির্দিষ্ট ঘন্টার (১ এবং ৮) রেকর্ড খুঁজা
$project দিয়ে ঘন্টা বের করে $match দিয়ে ফিল্টার করি:
> db.mongoDbSearchForHoursDemo.aggregate([
{ $project: { SpecificHours: { $hour: "$OrderDatetime" } } },
{ $match: { SpecificHours: { "$in": [8, 1] } } }
]);
আউটপুট:
{ "_id" : ObjectId("5cd6e8b86d78f205348bc62b"), "SpecificHours" : 1 }
{ "_id" : ObjectId("5cd6e8f26d78f205348bc62d"), "SpecificHours" : 8 }
ব্যাখ্যা: ০১:১০ এবং ০৮:৫৩ — এই দুটি রেকর্ড মেলেছে। $hour ০-২৩ রিটার্ন করে। আপনি $minute, $secondও ব্যবহার করতে পারেন।