Trong MongoDB aggregate(), sử dụng $group để tổng hợp collection và đếm theo trường.
Tạo collection dữ liệu
> db.demo616.insertOne({"details":{"Name":"Chris","Age":21}});
> db.demo616.insertOne({"details":{"Name":"Chris","Age":22}});
> db.demo616.insertOne({"details":{"Name":"Bob","Age":23}});
> db.demo616.insertOne({"details":{"Name":"Sam","Age":21}});
> db.demo616.insertOne({"details":{"Name":"Chris","Age":24}});
Hiển thị tất cả
> db.demo616.find();
Kết quả:
{
"_id" : ObjectId("5e99bfac65492f6c60d00283"),
"details" : { "Name" : "Chris", "Age" : 21 }
}
{
"_id" : ObjectId("5e99bfb065492f6c60d00284"),
"details" : { "Name" : "Chris", "Age" : 22 }
}
{
"_id" : ObjectId("5e99bfb865492f6c60d00285"),
"details" : { "Name" : "Bob", "Age" : 23 }
}
{
"_id" : ObjectId("5e99bfbd65492f6c60d00286"),
"details" : { "Name" : "Sam", "Age" : 21 }
}
{
"_id" : ObjectId("5e99bfc165492f6c60d00287"),
"details" : { "Name" : "Chris", "Age" : 24 }
}
Group theo details.Name và đếm
> db.demo616.aggregate([
{
$group: {
_id: "$details.Name",
Total: { $sum: 1 }
}
}
]);
Kết quả:
{
"_id" : "Sam", "Total" : 1
}
{
"_id" : "Bob", "Total" : 1
}
{
"_id" : "Chris", "Total" : 3
}
Giải thích:
_id: "$details.Name": Khóa nhóm là trườngNamebên trong objectdetails(dot notation)Total: { $sum: 1 }: Tăng bộ đếm 1 cho mỗi document thuộc nhóm- Chris xuất hiện 3 lần, Bob và Sam mỗi người 1 lần
Cách này áp dụng cho báo cáo thống kê, đếm tần suất, phân tích dữ liệu.