MongoDB sử dụng Aggregation Framework để thực hiện tương đương với SELECT COUNT GROUP BY trong SQL.
Ví dụ minh họa
Tạo collection countGroupByDemo:
> db.countGroupByDemo.insertOne({"MaSinhVien": 10, "TenSinhVien": "John"});
> db.countGroupByDemo.insertOne({"MaSinhVien": 10, "TenSinhVien": "Carol"});
> db.countGroupByDemo.insertOne({"MaSinhVien": 20, "TenSinhVien": "Sam"});
> db.countGroupByDemo.insertOne({"MaSinhVien": 30, "TenSinhVien": "Mike"});
> db.countGroupByDemo.insertOne({"MaSinhVien": 30, "TenSinhVien": "David"});
> db.countGroupByDemo.insertOne({"MaSinhVien": 10, "TenSinhVien": "Maxwell"});
> db.countGroupByDemo.insertOne({"MaSinhVien": 20, "TenSinhVien": "Bob"});
Dữ liệu ban đầu:
{ "MaSinhVien": 10, "TenSinhVien": "John" }
{ "MaSinhVien": 10, "TenSinhVien": "Carol" }
{ "MaSinhVien": 20, "TenSinhVien": "Sam" }
{ "MaSinhVien": 30, "TenSinhVien": "Mike" }
{ "MaSinhVien": 30, "TenSinhVien": "David" }
{ "MaSinhVien": 10, "TenSinhVien": "Maxwell" }
{ "MaSinhVien": 20, "TenSinhVien": "Bob" }
Truy vấn aggregation
> db.countGroupByDemo.aggregate([
{$group: {_id: "$MaSinhVien", dem: {$sum: 1}}}
]);
Kết quả:
{ "_id": 30, "dem": 2 }
{ "_id": 20, "dem": 2 }
{ "_id": 10, "dem": 3 }
Giải thích: $group nhóm theo MaSinhVien, $sum: 1 đếm số document trong mỗi nhóm.