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

จัดกลุ่มตามวันที่ในคอลเล็กชัน MongoDB หรือไม่


หากต้องการจัดกลุ่มตามวันที่ ให้ใช้ $group ใน MongoDB รวม ให้เราสร้างคอลเลกชันที่มีเอกสาร -

> 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();

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

{ "_id" : ObjectId("5ea064b44deddd72997713d6"), "id" : 1, "Name" : "Chris", "DueDate" : ISODate("2020-04-22T00:00:00Z") }
{ "_id" : ObjectId("5ea064b44deddd72997713d7"), "id" : 1, "Name" : "John", "DueDate" : ISODate("2020-04-22T00:00:00Z") }
{ "_id" : ObjectId("5ea064b44deddd72997713d8"), "id" : 1, "Name" : "Chris", "DueDate" : ISODate("2020-04-22T00:00:00Z") }

ต่อไปนี้เป็นแบบสอบถามเพื่อจัดกลุ่มตามวันที่ในคอลเลกชัน MongoDB -

> 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'}}
...    }}
... ])

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

{ "_id" : { "day" : 22, "month" : 4, "year" : 2020 }, "ListOfNames" : [ { "Name" : "Chris" }, { "Name" : "John" }, { "Name" : "Chris" } ] }