Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

MongoDB Aggregate: จัดกลุ่มตาม วัน/สัปดาห์/เดือน จากช่วงวันที่


สร้างคอลเลกชันพร้อมวันที่

> 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 }