Mongodb: cara mengelompokkan berdasarkan dan menjumlahkan


Anda dapat menggunakan sintaks berikut untuk mengelompokkan dan menghitung di MongoDB:

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

Perhatikan bahwa nama_bidang1 adalah bidang yang ingin Anda kelompokkan dan nama_bidang2 adalah bidang yang ingin Anda jumlahkan.

Contoh berikut memperlihatkan cara menggunakan sintaksis ini dengan tim koleksi dengan dokumen berikut:

 db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 })
db.teams.insertOne({team: " Spurs ", position: " Forward ", points: 22 })
db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 })
db.teams.insertOne({team: " Warriors ", position: " Forward ", points: 26 })
db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })

Contoh 1: mengelompokkan berdasarkan dan menjumlahkan

Kita dapat menggunakan kode berikut untuk mengelompokkan berdasarkan kolom “posisi” dan menghitung jumlah poin untuk setiap posisi.

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

Ini mengembalikan hasil berikut:

 { _id: ' Forward ', count: 48 }
{ _id: ' Guard ', count: 64 }
{ _id: ' Center ', count: 19 }

Ini memberitahu kita:

  • Pemain di posisi “Penyerang” memiliki total 48 poin.
  • Pemain dengan posisi “Penjaga” memiliki total 64 poin.
  • Pemain di posisi “Tengah” memiliki total 19 poin.

Contoh 2: kelompokkan berdasarkan dan tambahkan (lalu urutkan)

Kita dapat menggunakan kode berikut untuk mencari jumlah poin untuk setiap posisi dan secara otomatis mengurutkan hasilnya dalam urutan menaik :

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

Ini mengembalikan hasil berikut:

 { _id: ' Center ', count: 19 }
{ _id: ' Forward ', count: 48 }
{ _id: ' Guard ', count: 64 }

Hasilnya diurutkan berdasarkan poin dalam urutan menaik (dari yang terkecil hingga yang terbesar).

Kita dapat menggunakan -1 dalam argumen count untuk mengurutkan hasil dalam urutan menurun :

 db.teams.aggregate([
    { $group : { _id : " $position ", count :{ $sum : " $points "}}},
    { $sort : { count :-1}} 
])

Ini mengembalikan hasil berikut:

 { _id: ' Guard ', count: 64 }
{ _id: ' Forward ', count: 48 }
{ _id: ' Center ', count: 19 }

Perhatikan bahwa hasilnya diurutkan berdasarkan titik dalam urutan menurun (dari terbesar ke terkecil).

Catatan : Anda dapat menemukan dokumentasi lengkap untuk $group di sini .

Sumber daya tambahan

Tutorial berikut menjelaskan cara melakukan operasi umum lainnya di MongoDB:

MongoDB: Cara menghitung nilai berbeda dalam suatu bidang
MongoDB: Cara mengelompokkan berdasarkan beberapa bidang
MongoDB: Cara mengelompokkan dan menghitung

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *