การจัดกลุ่มข้อมูลตามวันที่ (วัน/เดือน/ปี) ใช้ $group ร่วมกับ date operators: $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") }
แสดงข้อมูล:
> 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"}}}} ... ]);ผลลัพธ์:
Date Operators ที่ใช้บ่อย
| Operator | คืนค่า | ตัวอย่าง |
|---|---|---|
$year | ปี (4 หลัก) | 2020 |
$month | เดือน (1-12) | 4 |
$dayOfMonth | วัน (1-31) | 22 |
$dayOfWeek | วันในสัปดาห์ (1=อาทิตย์) | 3 |
$hour, $minute, $second | เวลา | 14, 30, 59 |