Cara Menghitung Dokumen dengan Jumlah Agregat MongoDB

Cara Menghitung Dokumen Dengan Jumlah Agregat Mongodb



Seperti namanya, agregasi $count di MongoDB harus digunakan untuk menghitung catatan lapangan. Salah satu cara populer untuk menghitung record adalah dengan menggunakan metode count(). Selain itu, operator agregasi tertentu memungkinkan Anda menghitung catatan yang dibawa dari tahap sebelumnya dari alur agregat. Dalam panduan hari ini, kita akan membahas jumlah agregasi MongoDB menggunakan contoh kode.

Contoh 01

Untuk melakukan operasi $count pada bidang kumpulan database di MongoDB, kita perlu memiliki banyak catatan. Oleh karena itu, kami membuat koleksi bernama “Test” dan memasukkan 12 record ke dalamnya secara bersamaan menggunakan fungsi insertMany(). Sekarang, catatan koleksi 'Tes' ini telah ditampilkan di shell MongoDB melalui kueri fungsi find(). Anda dapat melihat bahwa ia memiliki total tiga bidang:_id, nama, dan skor.

tes> db.Tes.temukan({})







Sekarang, untuk menerapkan tahap $count pada bidang apa pun, kita harus menggunakan fungsi agregat MongoDB dalam instruksi “db”. Fungsi agregat terdiri dari pernyataan kondisi, sering kali menggunakan operator $match pada bidang tertentu, diikuti dengan bidang baru yang menampilkan jumlah total yang diperoleh dari bidang kondisi tertentu menggunakan operator $count.



Dalam kasus kami, kami telah menggunakan operator $match untuk mencari catatan yang cocok untuk nilai “60” di bidang skor, sedangkan operator $count telah digunakan untuk menghitung jumlah total catatan yang diambil dan menampilkannya di bawah bidang baru bernama 'SameScore'. Output untuk kueri ini telah menampilkan bidang 'SameScore' dengan nilai '2' yang menunjukkan bahwa ada dua catatan dengan nilai 'skor' '60' adalah 2 dalam koleksi 'Tes'.



db.Test.agregat([ { $cocok: { 'skor' : 60 } }, { $hitungan: 'Skor yang Sama' } ])

Anda juga dapat menggunakan agregasi $count untuk menghitung kolom selain angka, seperti kolom “nama” pada koleksi Tes. Kami telah menggunakan agregasi pencocokan untuk mencari catatan dalam koleksi di mana bidang nama memiliki nilai “John”. Agregasi hitungan telah berhasil menghitung jumlah total record yang cocok yaitu 2.





db.Test.agregat([ { $cocok: { 'nama' : 'Yohanes' } }, { $hitungan: 'Nama yang sama' } ])

Contoh 02

Mari perbarui kueri di atas dan terapkan kondisi lain untuk mendapatkan catatan berbeda. Kali ini, kita akan menerapkan agregasi $match pada kolom skor untuk mendapatkan jumlah total rekaman yang kolom skornya bernilai kurang dari 30. Agregasi hitungan akan menghitung jumlah total rekaman dan menambahkannya ke yang baru. kolom “KelasD.” Outputnya menunjukkan hasil “2” sebagai nomor hitungan untuk nilai yang cocok.

db.Test.agregat( [ { $pertandingan: { skor: { $lt: 30 } } }, { $hitungan: 'Bertingkat' } ] )

Anda juga dapat menggunakan agregasi $count sambil menerapkan operator logika untuk melakukan lebih dari 1 kondisi pada catatan lapangan. Oleh karena itu, total dua kondisi telah diterapkan pada bidang “Skor” menggunakan operator $and: gte (lebih besar dari atau sama dengan) dan lte (kurang dari dan sama dengan). Kedua kondisi tersebut harus benar untuk mendapatkan hasil dan menghitung catatannya. Jumlah total menunjukkan ada lima record dengan kriteria yang cocok.



db.Uji.agregat( [ { $cocok: { '$dan' : [ { 'skor' : {$gte: 60 }}, { 'skor' : {$LTE: 80 }} ] }},

{ $hitungan: 'KelasB' } ] )

Contoh 03

Dalam ilustrasi di atas, kami menggunakan agregasi hitungan untuk hanya mendapatkan jumlah rekaman yang cocok untuk nilai bidang tertentu, misalnya skor atau nama tertentu. Metode agregasi MongoDB memungkinkan Anda mendapatkan jumlah hitungan semua catatan yang berisi nilai duplikat dalam koleksi.

Untuk ini, Anda perlu menggunakan agregasi $group dalam perintah fungsi agregat, seperti di bawah ini. Bidang _id telah digunakan untuk menentukan bidang “nama” tempat agregasi hitungan akan bekerja. Bersamaan dengan ini, bidang yang ditentukan pengguna NameCount akan menggunakan agregasi $count untuk menghitung beberapa duplikat di bidang “nama”.

Output untuk kueri ini telah ditampilkan di bawah. Ini berisi nilai-nilai dari bidang 'nama' dan jumlah hitungannya dalam bidang NameCount berdasarkan duplikasi nilai, seperti Cillian memiliki 4 duplikat, dan seterusnya.

db.Test.agregat([ { $grup: { _id: '$nama' , Jumlah Nama: { $hitungan: {} }, }, }, ])

Contoh 04

Kita juga dapat menggunakan agregasi hitungan pada catatan bidang bersarang untuk menghitung nilai bidang tertentu. Untuk menguraikan hal ini, kami telah membuat koleksi bernama 'Guru' dan menambahkan bidang bersarang 'sub' dan bidang tipe array 'shift' di dalamnya bersama dengan bidang lainnya: nama dan pembayaran. Fungsi find() telah menampilkan kelima record dari koleksi ini.

tes> db.Guru.temukan({})

Sekarang, kami telah menerapkan fungsi agregat yang berisi operator pencocokan. Selain itu, operator $and telah diterapkan pada subbidang “matematika” dari bidang “sub”, yang berisi dua kondisi berbeda. Hitungannya kemudian dihitung. Outputnya menunjukkan ada dua catatan di mana subbidang matematika memiliki nilai lebih besar dari 10 dan kurang dari 20.

db.Guru.agregat( [ { $cocok: { '$dan' : [ { 'sub.matematika' : {$gte: 10 }}, { 'sub.matematika' : {$LTE: dua puluh }} ] }}, { $hitungan: 'Kelas A' } ] )

Contoh 05

Mari kita lihat contoh terakhir untuk mengilustrasikan penggunaan fungsi count() kali ini daripada menggunakan agregasi hitungan. Jadi, fungsi count() telah diterapkan ke bidang tipe array dari koleksi “Guru” yaitu “shift”. Dengan menggunakan indeks untuk bidang array menggunakan indeks 2, kami telah menetapkan kriteria pencocokan sebagai “malam”. Ini menghasilkan “2” sebagai jumlah total hitungan untuk entri “malam”.

db.Guru.hitungan({ 'pergeseran.2' : 'malam' })

Dengan cara yang sangat mirip, fungsi count() juga dapat diterapkan ke bidang bersarang, seperti subbidang “phy” dari bidang “sub” dari koleksi “Guru”. Kami telah menentukan kriteria pencocokan menggunakan operator “lte” yang menunjukkan nilai kurang dari 14 di subbidang “phy”. Output dari instruksi ini telah menampilkan “2” yaitu 4 record dengan nilai kurang dari 14.

db.Guru.hitungan( { 'sub.phy' : { $LTE: 14 } })

Kesimpulan

Panduan ini telah mendemonstrasikan dan menguraikan penggunaan $count agregasi MongoDB dengan beberapa contoh kode. Contohnya mencakup implikasi agregasi hitungan untuk mengambil nomor hitungan untuk rekaman nilai tertentu dan semua rekaman bidang melalui koleksi. Selain itu, ini mencakup penggunaan agregasi jumlah pada bidang array dan bidang tertanam (bersarang). Pada akhirnya, contoh fungsi count() telah disertakan untuk membuat perbedaan antara penggunaan agregasi hitungan dan fungsi hitungan.