গ্রুপ করতে MongoDB-তে $week এবং $month ব্যবহার করুন। ডকুমেন্টসহ একটি কলেকশন তৈরি করি:
> db.demo133.insertOne({"Rank":18,"DueDate":new ISODate("2020-01-10")});
{ "acknowledged" : true, "insertedId" : ObjectId("5e31980968e7f832db1a7f78") }
> db.demo133.insertOne({"Rank":12,"DueDate":new ISODate("2020-01-10")});
{ "acknowledged" : true, "insertedId" : ObjectId("5e31982568e7f832db1a7f79") }
> db.demo133.insertOne({"Rank":12,"DueDate":new ISODate("2020-02-01")});
{ "acknowledged" : true, "insertedId" : ObjectId("5e31986568e7f832db1a7f7a") }
> db.demo133.insertOne({"Rank":20,"DueDate":new ISODate("2020-02-01")});
{ "acknowledged" : true, "insertedId" : ObjectId("5e31986c68e7f832db1a7f7b") }
find() মেথড দিয়ে সব ডকুমেন্ট দেখান:
> db.demo133.find();
আউটপুট:
{ "_id" : ObjectId("5e31980968e7f832db1a7f78"), "Rank" : 18, "DueDate" : ISODate("2020-01-10T00:00:00Z") }
{ "_id" : ObjectId("5e31982568e7f832db1a7f79"), "Rank" : 12, "DueDate" : ISODate("2020-01-10T00:00:00Z") }
{ "_id" : ObjectId("5e31986568e7f832db1a7f7a"), "Rank" : 12, "DueDate" : ISODate("2020-02-01T00:00:00Z") }
{ "_id" : ObjectId("5e31986c68e7f832db1a7f7b"), "Rank" : 20, "DueDate" : ISODate("2020-02-01T00:00:00Z") }
ডেট রেঞ্জের ভিত্তিতে দিন/মাস/সপ্তাহ অনুযায়ী গ্রুপ করার কোয়েরি:
> db.demo133.aggregate([
{
"$project": {
"DueDateWeek": { "$week": "$DueDate" },
"DueDateMonth": { "$month": "$DueDate" },
"Rank": 1
}
},
{
"$group": {
"_id": "$DueDateWeek",
"AvgValue": { "$avg": "$Rank" },
"MonthValue": { "$first": "$DueDateMonth" }
}
}
])
ফলাফল (সপ্তাহ অনুযায়ী গড় Rank এবং মাস):
{ "_id" : 4, "AvgValue" : 16, "MonthValue" : 2 }
{ "_id" : 1, "AvgValue" : 15, "MonthValue" : 1 }