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

Tổng hợp collection và group theo đếm trường trong MongoDB

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ường Name bên trong object details (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.