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.