Cara Mengira Dokumen dengan Kiraan Agregat MongoDB

Cara Mengira Dokumen Dengan Kiraan Agregat Mongodb



Seperti namanya, pengagregatan $count dalam MongoDB mesti digunakan untuk mengira rekod medan. Salah satu cara popular untuk mengira rekod ialah menggunakan kaedah count(). Selain itu, pengendali pengagregatan tertentu membenarkan anda mengira rekod yang dibawa masuk dari peringkat saluran paip agregat sebelumnya. Dalam panduan ini hari ini, kita akan membincangkan pengagregatan kiraan MongoDB menggunakan contoh kod.

Contoh 01

Untuk melaksanakan operasi $count pada medan koleksi pangkalan data dalam MongoDB, kita perlu mempunyai banyak rekod. Oleh itu, kami mencipta koleksi bernama 'Ujian' dan memasukkan 12 rekod ke dalamnya secara serentak menggunakan fungsi insertMany(). Kini, rekod koleksi 'Ujian' ini telah dipaparkan pada cangkerang MongoDB melalui pertanyaan fungsi find(). Anda boleh melihat bahawa ia mempunyai sejumlah tiga medan:_id, nama dan skor.

test> db.Test.find({})







Sekarang, untuk menggunakan peringkat $count pada mana-mana medan, kita mesti menggunakan fungsi agregat MongoDB dalam arahan 'db'. Fungsi agregat terdiri daripada pernyataan syarat, selalunya menggunakan operator $match pada medan tertentu, diikuti dengan medan baharu yang memaparkan jumlah kiraan yang diperoleh daripada medan syarat yang ditentukan menggunakan operator $count.



Dalam kes kami, kami telah menggunakan operator $match untuk mencari rekod yang sepadan untuk nilai '60' dalam medan skor, manakala operator $count telah digunakan untuk mengira jumlah rekod yang diambil dan memaparkannya di bawah medan baharu bernama “SameScore”. Output untuk pertanyaan ini telah menunjukkan medan 'SameScore' dengan nilai '2' yang menunjukkan bahawa terdapat dua rekod dengan nilai 'skor' '60' ialah 2 dalam koleksi 'Ujian'.



db.Test.aggregate([ { $padanan: { 'skor' : 60 } }, { $count: 'SameScore' } ])

Anda juga boleh menggunakan pengagregatan $count untuk mengira medan selain nombor, seperti medan 'nama' koleksi Ujian. Kami telah menggunakan pengagregatan padanan untuk mencari rekod dalam koleksi yang medan nama mempunyai nilai 'John'. Agregasi kiraan telah berjaya mengira jumlah rekod yang dipadankan iaitu 2.





db.Test.aggregate([ { $padanan: { 'nama' : 'John' } }, { $count: 'Nama yang sama' } ])

Contoh 02

Mari kemas kini pertanyaan di atas dan gunakan syarat lain untuk mendapatkan rekod yang berbeza. Kali ini, kami akan menggunakan pengagregatan $padanan bagi medan skor untuk mendapatkan jumlah kiraan rekod di mana medan skor mempunyai nilai kurang daripada 30. Pengagregatan kiraan akan mengira jumlah rekod dan menambah kepada rekod baharu lajur 'GredD.' Output menunjukkan hasil '2' sebagai nombor kiraan untuk nilai yang dipadankan.

db.Test.aggregate( [ { $perlawanan: { markah: { $lt: 30 } } }, { $count: 'GredD' } ] )

Anda juga boleh menggunakan pengagregatan $count sambil menggunakan operator logik untuk melaksanakan lebih daripada 1 keadaan pada rekod medan. Oleh itu, sebanyak dua syarat telah digunakan pada medan 'Skor' menggunakan operator $and: gte (lebih besar daripada atau sama dengan) dan lte (kurang daripada dan sama dengan). Kedua-dua syarat mesti benar untuk mendapatkan keputusan dan mengira rekodnya. Jumlah kiraan menunjukkan terdapat lima rekod dengan kriteria padanan.



db.Test.aggregate( [ { $padanan: { '$dan' : [ { 'skor' : {$gte: 60 }}, { 'skor' : {$lte: 80 }} ] }},

{ $count: 'Gred B' } ] )

Contoh 03

Dalam ilustrasi di atas, kami telah menggunakan pengagregatan kiraan untuk hanya mendapatkan bilangan rekod yang dipadankan untuk nilai medan tertentu, seperti skor atau nama tertentu. Kaedah pengagregatan MongoDB membolehkan anda mendapatkan nombor kiraan semua rekod yang mengandungi nilai pendua dalam koleksi.

Untuk ini, anda perlu menggunakan pengagregatan $kumpulan dalam perintah fungsi agregat, seperti di bawah. Medan _id telah digunakan untuk menentukan medan 'nama' di mana pengagregatan kiraan akan berfungsi. Bersama-sama ini, medan takrif pengguna NameCount akan menggunakan pengagregatan $count untuk mengira beberapa pendua dalam medan 'nama'.

Output untuk pertanyaan ini telah dipaparkan di bawah. Ia mengandungi nilai daripada medan 'nama' dan nombor kiraannya dalam medan NameCount mengikut pertindihan nilai, seperti Cillian yang mempunyai 4 pendua dan seterusnya.

db.Test.aggregate([ { $kumpulan: { _id: '$nama' , Bilangan Nama: { $kiraan: {} }, }, }, ])

Contoh 04

Kami juga boleh menggunakan pengagregatan kiraan pada rekod medan bersarang untuk mengira nilai medan tertentu. Untuk menghuraikan perkara ini, kami telah mencipta koleksi bernama 'Guru' dan menambahkan medan bersarang 'sub' dan medan jenis tatasusunan 'shift' di dalamnya bersama-sama dengan medan lain: nama dan bayar. Fungsi find() telah memaparkan kesemua lima rekod koleksi ini.

test> db.Teacher.find({})

Kini, kami telah menggunakan fungsi agregat yang mengandungi pengendali padanan. Selain itu, operator $and telah digunakan pada subbidang 'matematik' medan 'sub', yang mengandungi dua syarat berbeza. Kiraan itu kemudiannya dikira. Output menunjukkan terdapat dua rekod di mana subbidang matematik mempunyai lebih daripada 10 dan kurang daripada 20 nilai.

db.Teacher.aggregate( [ { $padanan: { '$dan' : [ { 'sub.math' : {$gte: 10 }}, { 'sub.math' : {$lte: dua puluh }} ] }}, { $count: 'Gred A' } ] )

Contoh 05

Mari lihat contoh terakhir untuk menggambarkan menggunakan fungsi count() kali ini dan bukannya menggunakan pengagregatan kiraan. Jadi, fungsi count() telah digunakan pada medan jenis tatasusunan koleksi 'Guru' iaitu 'shift'. Menggunakan indeks untuk medan tatasusunan menggunakan indeks 2, kami telah menetapkan kriteria padanan sebagai 'malam'. Ia mengeluarkan '2' sebagai jumlah bilangan kiraan untuk entri 'malam'.

db.Teacher.count({ 'anjakan.2' : 'malam' })

Dengan cara yang hampir sama, fungsi count() juga boleh digunakan pada medan bersarang, seperti subbidang 'phy' medan 'sub' daripada koleksi 'Guru'. Kami telah menentukan kriteria padanan menggunakan operator 'lte' yang menunjukkan nilai kurang daripada 14 dalam subbidang 'phy'. Output arahan ini telah memaparkan '2' iaitu 4 rekod dengan nilai kurang daripada 14.

db.Teacher.count( { 'sub.phy' : { $lte: 14 } })

Kesimpulan

Panduan ini telah menunjukkan dan menghuraikan penggunaan $count agregation MongoDB dengan beberapa contoh kod. Contohnya termasuk implikasi pengagregatan kiraan untuk mengambil nombor kiraan bagi rekod nilai tertentu dan semua rekod medan melalui koleksi. Juga, ia termasuk penggunaan pengagregatan kiraan pada medan tatasusunan dan medan terbenam (bersarang). Pada akhirnya, contoh fungsi count() telah disertakan untuk membuat perbezaan antara penggunaan agregasi kiraan dan fungsi kiraan.