Pengendali $Max MongoDB

Pengendali Max Mongodb



MongoDB tampil dengan banyak pengendali untuk melakukan transaksi tujuan khas seperti mengemas kini rekod, menambah rekod baharu dan memaparkan rekod dalam keadaan tertentu. Salah satu pengendali tersebut ialah pengendali '$max' yang digunakan untuk menyemak nilai terbesar dalam rekod. Selain itu, kita boleh menggunakannya untuk mengemas kini nilai terkecil dengan nilai terbesar baharu selepas membandingkannya dalam arahan fungsi 'kemas kini'. Penggunaan lain pengendali '$max' adalah untuk mengumpulkan dan memaparkan rekod koleksi tertentu dengan cara ia hanya boleh memaparkan nilai terbesar sambil mengabaikan nilai terkecil apabila terdapat beberapa rekod pendua dalam pangkalan data. Dalam panduan ini, kami akan menggunakan contoh pertanyaan mudah untuk membincangkan penggunaan operator '$max' yang disebut sebelum ini dalam utiliti baris arahan MongoDB dalam platform Windows kami.

Contoh 1:

Bermula dengan ilustrasi untuk membincangkan dan cara pengendali '$max' berfungsi dalam cangkerang MongoDB, kita perlu mempunyai koleksi bernama 'data' yang mesti dibuat sudah. Untuk mencipta koleksi ini, kami mesti menambah beberapa rekod ke dalamnya secara langsung tanpa menggunakan sebarang arahan 'cipta'. Arahan sisipan sudah cukup untuk mencipta koleksi dan menambah rekod di dalamnya. Kami menggunakan fungsi 'insertMany' dalam pertanyaan untuk menambah empat rekod, setiap satu mempunyai 4 medan jenis yang berbeza.

ujian > db.data.insertMany ( [ { 'ID' : satu , 'Nama' : 'Bravo' , 'Gaji' : 65000 , 'Umur' : 44 } ,
... { 'ID' : 2 , 'Nama' : 'Stephen' , 'Gaji' : 77000 , 'Umur' : 55 } ,
... { 'ID' : 3 , 'Nama' : 'Maria' , 'Gaji' : 42000 , 'Umur' : 27 } ,
... { 'ID' : 4 , 'Nama' : 'Hawkin' , 'Gaji' : 58000 , 'Umur' : 33 } ] )







Perintah sisip berjaya dan mesej output menunjukkan bahawa rekod telah ditambah.



Selepas memasukkan rekod dalam koleksi 'data' MongoDB kami, tiba masanya untuk melihat rekod tersebut pada shell. Oleh itu, kami menjalankan arahan fungsi 'find()' pada MongoDB Cli diikuti dengan fungsi 'forEach()', mengambil hujah printjson untuk memaparkan hasil dalam format JSON. Hasil yang dipaparkan dalam cangkerang menunjukkan sejumlah 4 dokumen dalam koleksi yang ditunjukkan dalam imej output berikut:



ujian > db.data.cari ( ) .untuk setiap ( printjson )





Mari cuba operator '$max' dalam arahan kemas kini MongoDB untuk mengubah suai rekod yang telah dimasukkan. Oleh itu, updateOne() digunakan di sini untuk hanya mengubah suai satu rekod pengumpulan 'data' seperti rekod khusus di mana medan 'id' mempunyai nilai '2'. Operator '$max' digunakan pada medan 'Gaji' pengumpulan 'data' untuk menyemak sama ada medan 'Gaji' mempunyai nilai yang lebih besar daripada 55000. Jika tidak, kemas kini rekod dengan 55000. Hasil output untuk ini pertanyaan fungsi updateOne() yang menunjukkan kiraan pengubahsuaian '0' kerana rekod '2' mempunyai kurang daripada 55000 nilai gaji.

ujian > db.data.updateOne ( { ID: 2 } , { $maks : { Gaji: 55000 } } )



Selepas kemas kini ini, kami mencuba pertanyaan fungsi 'find()' yang sama untuk memaparkan hasil yang diubah suai pada shell baris arahan MongoDB. Tetapi kami mendapat output yang sama yang kami dapat sebelum menggunakan arahan 'kemas kini'. Tiada perubahan kerana nilai 77000 lebih besar daripada 55000.

ujian > db.data.cari ( ) .untuk setiap ( printjson )

Mari cuba pertanyaan updateOne() yang sama sekali lagi dengan sedikit pengubahsuaian. Kali ini, kami mencuba nilai yang lebih besar iaitu '85000' daripada nilai '77000' yang sudah berada dalam medan 'Gaji' pengumpulan 'data' untuk membuat perubahan dalam output kami. Output menunjukkan kiraan pengubahsuaian '1' kali ini kerana nilai '85000' menggantikan nilai '77000' yang sedia ada dalam medan selepas perbandingan berlaku hanya kerana pengendali '$max' dalam pertanyaan ini.

ujian > db.data.updateOne ( { ID: 2 } , { $maks : { Gaji: 85000 } } )

Selepas berjaya menggantikan nilai '77000' yang lebih kecil dengan nilai baharu '85000' melalui pengendali '$max' MongoDB, akhirnya kami menggunakan fungsi 'find()' dalam arahan 'db' untuk menyemak kemas kini ini, sama ada ia berjaya dikemas kini atau tidak. Output menunjukkan bahawa nilai dalam medan 'Gaji' rekod ke-2 dalam koleksi ini dikemas kini dengan sempurna.

ujian > db.data.cari ( ) .untuk setiap ( printjson )

Contoh 2:

Mari beralih ke contoh lain untuk menggunakan operator '$max' dalam MongoDB. Kali ini, kami membuang operator '$max' untuk mengumpulkan dan memaparkan rekod unik koleksi jika terdapat sebarang pendua untuk nilai medan yang sama. Untuk ini, kami memasukkan 2 lagi rekod dalam koleksi 'data' pangkalan data 'ujian'. Rekod ini mengandungi 2 nilai yang sama dalam medan 'Nama' yang juga dalam 4 rekod yang telah dimasukkan dan selebihnya adalah berbeza. Untuk memasukkan rekod, kami menggunakan arahan 'db' yang sama yang mengandungi fungsi 'insertMany' di dalamnya untuk pengumpulan 'data' untuk dikemas kini.

ujian > db.data.insertMany ( [ { 'ID' : 5 , 'Nama' : 'Bravo' , 'Gaji' : 35000 , 'Umur' : Empat lima } ,
{ 'ID' : 6 , 'Nama' : 'Hawkin' , 'Gaji' : 67000 , 'Umur' : 33 } ] )

Arahan dilaksanakan dengan jayanya.

Sekarang setelah 2 rekod baharu ditambah, anda juga boleh memaparkannya menggunakan fungsi 'cari' yang sama dalam arahan 'db' diikuti dengan fungsi 'forEach'. Output paparan berikut dalam imej menunjukkan 2 rekod baharu pada penghujung koleksi ini:

ujian > db.data.cari ( ) .untuk setiap ( printjson )

Selepas memaparkan 6 rekod pengumpulan 'data', kami bersedia untuk melaksanakan fungsi agregat padanya. Oleh itu, fungsi 'agregat' digunakan dalam pertanyaan tersenarai berikut. Dengan fungsi ini, kami menggunakan operator '$group' untuk mengumpulkan rekod pengumpulan 'data' mengikut nama unik medan 'id' dan medan 'Gaji'. Operator '$max' digunakan pada medan 'Gaji' rekod untuk mendapatkan nilai maksimum untuk dipaparkan. Dapatkan nilai terbesar dari medan Gaji' mengikut nama pendua dalam medan 'Nama' yang digunakan sebagai 'id' untuk kumpulan ini dipaparkan. Sebanyak 4 rekod dipaparkan. Nilai terkecil (daripada rekod pendua) diabaikan manakala nilai terbesar dipaparkan.

db.data.aggregate ( [ { $kumpulan : { _ID: ' $Nama ' , Gaji: { $maks : ' $Gaji ' } } } ] )

Kesimpulan

Perenggan pertama panduan ini membantu anda memahami kepentingan pengendali yang digunakan dalam MongoDB, terutamanya pengendali '$max' dan penggunaannya dalam cangkerang MongoDB. Panduan ini mengandungi dua contoh berasaskan arahan yang berkaitan dengan pengendali '$max' untuk menunjukkan tujuannya. Melalui ilustrasi MongoDB, anda akan dapat melakukan beberapa urus niaga yang berguna dalam pangkalan data, sama ada tentang menggantikan rekod sedia ada dengan nilai baharu atau memaparkan rekod dengan mengumpulkannya melalui pengendali '$max'.