Mongodb: Group vs sum - Tự học Database

Nội dung bài viết

Video học lập trình mỗi ngày

Tự học Mongodb - Bài này giúp các anh chị hiểu về cách sử dụng Group và Sum để có thể làm thống kê trong database.

Tình huống

Cho một danh sách các quốc gia thi Seagame như sau:

db.teams.insertOne({team: "Việt Nam", game: 'Phối hợp', points: 39})
db.teams.insertOne({team: "Thái Lan", game: 'Đấu kiếm', points: 22})
db.teams.insertOne({team: "Singapore", game: 'Bida', points: 19})
db.teams.insertOne({team: "Thái Lan", game: 'Bắn súng', points: 26})
db.teams.insertOne({team: "Việt Nam", game: 'Cung tên', points: 33})

...

Anh chị hãy thống kê tổng số points mà các quốc gia đạt được?

how to group by sum in mongodb

Cách làm như sau, đầu tiên dựa vào cú pháp sau trong Mongodb:

db.collection.aggregate([
    {$group : {_id:"$field_group", count:{$sum:"$field_sum"}}}
])

Trong đó: $field_group chính là field mà bạn muốn Group, cụ thể như trên, chúng ta muốn thống kế tổng sổ thì $field_group chính là team. Tiếp đến đó là $field_sum mà bạn muốn tổng SUM, cụ thể là points.

Như vậy cách làm như sau:

db.teams.aggregate([
    {$group : {_id:"$team", count:{$sum:"$points"}}}
])

Như vậy chúng ta sẽ có kết quả như sau:

{ _id: 'Việt Nam', count: 72 }
{ _id: 'Thái Lan', count: 48 }
{ _id: 'Singapore', count: 19 }

Ngoài ra chúng ta muốn sắp xếp theo thứ tự tăng or giảm có thể tham khảo thêm về sort, group, sum in mongodb.

Có thể bạn đã bị missing