สร้างคอลเลกชันพร้อมวันที่
> 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") }
แสดงข้อมูล
> 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") }
คิวรี Aggregate: จัดกลุ่มตามสัปดาห์และเดือน
ใช้ $week และ $month ใน $project แล้ว $group คำนวณค่าเฉลี่ย:
> db.demo133.aggregate([
{
"$project": {
"DueDateWeek": { "$week": "$DueDate" },
"DueDateMonth": { "$month": "$DueDate" },
"Rank": 1
}
},
{
"$group": {
"_id": "$DueDateWeek",
"AvgValue": { "$avg": "$Rank" },
"MonthValue": { "$first": "$DueDateMonth" }
}
}
])
ผลลัพธ์
{ "_id": 4, "AvgValue": 16, "MonthValue": 2 }
{ "_id": 1, "AvgValue": 15, "MonthValue": 1 }