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

GroupBy Date ใน MongoDB เพื่อนับบันทึกวันที่ซ้ำกัน


ในการนับบันทึกวันที่ซ้ำกันใน MongoDB ให้ใช้ aggregate() และ $group ให้เราสร้างคอลเลกชันที่มีเอกสาร -

> db.demo160.insertOne({"DueDate":new ISODate()});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e357525fdf09dd6d0853a04")
}
> db.demo160.insertOne({"DueDate":new ISODate("2019-01-11")});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e357532fdf09dd6d0853a05")
}
> db.demo160.insertOne({"DueDate":new ISODate()});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e357534fdf09dd6d0853a06")
}
> db.demo160.insertOne({"DueDate":new ISODate("2019-01-11")});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e357538fdf09dd6d0853a07")
}
> db.demo160.insertOne({"DueDate":new ISODate("2020-04-10")});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e357542fdf09dd6d0853a08")
}

แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้วิธี find() -

> db.demo160.find();

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

{ "_id" : ObjectId("5e357525fdf09dd6d0853a04"), "DueDate" : ISODate("2020-02-01T12:55:01.983Z") }
{ "_id" : ObjectId("5e357532fdf09dd6d0853a05"), "DueDate" : ISODate("2019-01-11T00:00:00Z") }
{ "_id" : ObjectId("5e357534fdf09dd6d0853a06"), "DueDate" : ISODate("2020-02-01T12:55:16.787Z") }
{ "_id" : ObjectId("5e357538fdf09dd6d0853a07"), "DueDate" : ISODate("2019-01-11T00:00:00Z") }
{ "_id" : ObjectId("5e357542fdf09dd6d0853a08"), "DueDate" : ISODate("2020-04-10T00:00:00Z") }

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

> db.demo160.aggregate([
...    { $group: {
...       _id: {
...          $add: [
...             { $dayOfYear: "$DueDate"},
...             { $multiply:
...             [400, {$year: "$DueDate"}]
...          }
...       ]},
...       Frequency: { $sum: 1 },
...       d: {$min: "$DueDate"}
...    }
... },
... { $sort: {_id: 1} },
... { $limit: 100},
... { $project: { date: "$d", Frequency: 1, _id: 0} }
... ]);

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

{ "Frequency" : 2, "date" : ISODate("2019-01-11T00:00:00Z") }
{ "Frequency" : 2, "date" : ISODate("2020-02-01T12:55:01.983Z") }
{ "Frequency" : 1, "date" : ISODate("2020-04-10T00:00:00Z") }