Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Aggregation MongoDB: Nhóm ngày trong tài liệu lồng nhau và đếm số lượng

Sử dụng aggregation với $unwind và $group để nhóm và đếm các ngày trùng lặp trong mảng lồng nhau. Tạo collection đơn hàng:

> db.demo717.insertOne({
...   "shippingdetails": [
...     { duedate:"2020-04-29 22:33:04" },
...     { duedate:"2020-03-29 22:33:04" },
...     { duedate:"2020-04-29 22:33:04" },
...     { duedate:"2020-01-29 22:33:04" }
...   ]
... });
{ "acknowledged" : true, "insertedId" : ObjectId("5ea9b3cd85324c2c98cc4c30") }

Hiển thị dữ liệu:

> db.demo717.find().pretty();
{ "_id" : ObjectId("5ea9b3cd85324c2c98cc4c30"), "shippingdetails" : [ { "duedate" : "2020-04-29 22:33:04" }, { "duedate" : "2020-03-29 22:33:04" }, { "duedate" : "2020-04-29 22:33:04" }, { "duedate" : "2020-01-29 22:33:04" } ] }

Pipeline aggregation nhóm theo ngày và đếm:

> db.demo717.aggregate([
...   { $unwind: "$shippingdetails" },
...   { $group: {
...     _id: "$shippingdetails.duedate",
...     count: { $sum: 1 }
...   }}
... ]);

Kết quả:

{ "_id" : "2020-01-29 22:33:04", "count" : 1 }
{ "_id" : "2020-03-29 22:33:04", "count" : 1 }
{ "_id" : "2020-04-29 22:33:04", "count" : 2 }

Ứng dụng: Thống kê số đơn hàng theo ngày giao, phân tích tần suất sự kiện, báo cáo theo thời gian.