MongoDB-এ তারিখ ফিল্ড অনুযায়ী গ্রুপ করতে অগরিগেশনে $group এবং ডেট অপারেটর ($dayOfMonth, $month, $year) ব্যবহার করুন। একটি কালেকশন তৈরি করুন:
> db.demo657.insertOne({ id: 1, Name: "Chris", DueDate: new ISODate("2020-04-22") });
{ "acknowledged" : true, "insertedId" : ObjectId("5ea064b44deddd72997713d6") }
> db.demo657.insertOne({ id: 1, Name: "John", DueDate: new ISODate("2020-04-22") });
{ "acknowledged" : true, "insertedId" : ObjectId("5ea064b44deddd72997713d7") }
> db.demo657.insertOne({ id: 1, Name: "Chris", DueDate: new ISODate("2020-04-22") });
{ "acknowledged" : true, "insertedId" : ObjectId("5ea064b44deddd72997713d8") }
find() দিয়ে ডকুমেন্ট দেখান:
> db.demo657.find();
আউটপুট:
নির্দিষ্ট তারিখ রেঞ্জে (২১-২২ এপ্রিল ২০২০) গ্রুপ করে নামের তালিকা বের করার কোয়ারি:
> db.demo657.aggregate([ {$match: {id:1, DueDate: {$gte:new ISODate('2020-04-21'), $lt:new ISODate("2020-04-23")}}}, {$project: {day: {'$dayOfMonth': '$DueDate'}, month: {'$month':'$DueDate'}, year: {'$year':'$DueDate'}, Name:"$Name" }}, {$group: { _id: {day:'$day',month:'$month',year:'$year'}, ListOfNames: {$push:{Name:'$Name'}} }} ])আউটপুট:
ব্যাখ্যা:
$matchতারিখ রেঞ্জ ফিল্টার করে।$projectদিয়ে তারিখের দিন, মাস, বছর আলাদা ফিল্ড বানানো হয়েছে।$groupএ কম্পাউন্ড _id (দিন, মাস, বছর) দিয়ে গ্রুপ করা হয়েছে এবং$pushদিয়ে নামগুলো অ্যারেতে সংগ্রহ করা হয়েছে।