Saya baru mengenal mongodb dan mungkin saya melewatkan sesuatu. Namun memiliki sampel yang banyak di internet, masih mengalami kendala untuk mendapatkan total pada satu field yang merupakan bagian dari array objek. Inilah yang saya lakukan Show
mencoba untuk mendapatkan jumlah total dengan cara yang berbeda _mendapatkan saldo 0 bukannya -2300
hal yang sama dengan $unwind
apa yang saya lakukan salah? terima kasih Di MongoDB, operator pipa agregasi _7 menghitung dan mengembalikan jumlah nilai numerikSintaksisOperator 7 mendukung dua sintaksSintaks 1 _Sintaks 2 _Sintaks pertama menerima satu argumen dan sintaks kedua menerima banyak argumen Saat digunakan dalam tahap _9, Anda hanya dapat menggunakan sintaks pertama. Dalam hal ini, _7 mengembalikan jumlah kolektif semua nilai numerik yang dihasilkan dari penerapan ekspresi yang ditentukan ke setiap dokumen dalam grup dokumen yang berbagi grup yang sama berdasarkan kunciContoh Sintaks 1 (Argumen Tunggal)Berikut adalah beberapa contoh yang menggunakan sintaks 1 Dokumen yang DikelompokkanContoh ini menggunakan 7 bersamaan dengan 9 untuk mengembalikan jumlah pada sekelompok dokumen yang dikelompokkan berdasarkan kunciMisalkan kita memiliki koleksi bernama { "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 } { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 } { "_id" : 5, "name" : "Bruce", "type" : "Kangaroo", "weight" : 100 } { "_id" : 6, "name" : "Hop", "type" : "Kangaroo", "weight" : 130 } { "_id" : 7, "name" : "Punch", "type" : "Kangaroo", "weight" : 200 } { "_id" : 8, "name" : "Snap", "type" : "Cat", "weight" : 12 } { "_id" : 9, "name" : "Ruff", "type" : "Dog", "weight" : 30 }_3 dengan dokumen-dokumen berikut { "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 } { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 } { "_id" : 5, "name" : "Bruce", "type" : "Kangaroo", "weight" : 100 } { "_id" : 6, "name" : "Hop", "type" : "Kangaroo", "weight" : 130 } { "_id" : 7, "name" : "Punch", "type" : "Kangaroo", "weight" : 200 } { "_id" : 8, "name" : "Snap", "type" : "Cat", "weight" : 12 } { "_id" : 9, "name" : "Ruff", "type" : "Dog", "weight" : 30 } Kita dapat mengelompokkan dokumen ini berdasarkan bidang { "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 } { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 } { "_id" : 5, "name" : "Bruce", "type" : "Kangaroo", "weight" : 100 } { "_id" : 6, "name" : "Hop", "type" : "Kangaroo", "weight" : 130 } { "_id" : 7, "name" : "Punch", "type" : "Kangaroo", "weight" : 200 } { "_id" : 8, "name" : "Snap", "type" : "Cat", "weight" : 12 } { "_id" : 9, "name" : "Ruff", "type" : "Dog", "weight" : 30 }_4, lalu menggunakan 7 untuk mengembalikan jumlah bidang { "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 } { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 } { "_id" : 5, "name" : "Bruce", "type" : "Kangaroo", "weight" : 100 } { "_id" : 6, "name" : "Hop", "type" : "Kangaroo", "weight" : 130 } { "_id" : 7, "name" : "Punch", "type" : "Kangaroo", "weight" : 200 } { "_id" : 8, "name" : "Snap", "type" : "Cat", "weight" : 12 } { "_id" : 9, "name" : "Ruff", "type" : "Dog", "weight" : 30 }6 untuk setiap grup
Hasil { "_id" : "Kangaroo", "sum" : 430 } { "_id" : "Cat", "sum" : 27 } { "_id" : "Dog", "sum" : 60 } ArrayContoh ini berlaku _7 ke satu dokumen yang berisi bidang dengan larik nilaiOpsi ini hanya tersedia saat menggunakan sintaks argumen tunggal. Array diabaikan saat menggunakan sintaks multi-argumen (lebih lanjut tentang ini di bawah) Misalkan kita memiliki koleksi bernama { "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 } { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 } { "_id" : 5, "name" : "Bruce", "type" : "Kangaroo", "weight" : 100 } { "_id" : 6, "name" : "Hop", "type" : "Kangaroo", "weight" : 130 } { "_id" : 7, "name" : "Punch", "type" : "Kangaroo", "weight" : 200 } { "_id" : 8, "name" : "Snap", "type" : "Cat", "weight" : 12 } { "_id" : 9, "name" : "Ruff", "type" : "Dog", "weight" : 30 }_8 dengan dokumen-dokumen berikut { "_id" : 1, "player" : "Homer", "scores" : [ 1, 7, 2, 3, 8, 7, 1 ] } { "_id" : 2, "player" : "Marge", "scores" : [ 0, 1, 8, 17, 18, 8 ] } { "_id" : 3, "player" : "Bart", "scores" : [ 15, 11, 8, 0, 1, 3 ] } { "_id" : 4, "player" : "Brian", "scores" : [ 7 ] } { "_id" : 5, "player" : "Farnsworth", "scores" : [ ] } { "_id" : 6, "player" : "Meg", "scores" : null } { "_id" : 7, "player" : "Ron" } Kami dapat menerapkan 7 ke bidang 0 di setiap dokumen
Hasil { "_id" : 1, "player" : "Homer", "sum" : 29 } { "_id" : 2, "player" : "Marge", "sum" : 52 } { "_id" : 3, "player" : "Bart", "sum" : 38 } { "_id" : 4, "player" : "Brian", "sum" : 7 } { "_id" : 5, "player" : "Farnsworth", "sum" : 0 } { "_id" : 6, "player" : "Meg", "sum" : 0 } { "_id" : 7, "player" : "Ron", "sum" : 0 } Dalam hal ini, empat dokumen pertama mengembalikan jumlah dari berbagai angka yang ada di lariknya masing-masing Dalam kasus dokumen 4, ini sama dengan angka, karena hanya ada satu angka dalam larik Dokumen 5 mengembalikan 1 karena kami menyediakan larik kosongDokumen 6 dikembalikan 1 karena kami memberikan 3 sebagai argumenDokumen 7 mengembalikan 1 karena bidangnya bahkan tidak adaContoh Sintaks 2 (Beberapa Argumen)Sintaks kedua melibatkan penyediaan 7 dengan lebih dari satu argumen. _7 kemudian menghitung jumlah berdasarkan semua argumen yang disediakanMisalkan kita memiliki koleksi bernama _7 dengan dokumen-dokumen berikut{ "_id" : 1, "a" : 1, "b" : 2, "c" : 3, "d" : 4 } { "_id" : 2, "a" : 1, "b" : 2, "c" : 3, "d" : [ 4 ] } { "_id" : 3, "a" : 1, "b" : 2, "c" : 3, "d" : "Hey" } { "_id" : 4, "a" : "One", "b" : "Two", "c" : "Three", "d" : "Four" } Kita dapat menggunakan 7 untuk mengembalikan jumlah bidang 9, { "_id" : "Kangaroo", "sum" : 430 } { "_id" : "Cat", "sum" : 27 } { "_id" : "Dog", "sum" : 60 }0, { "_id" : "Kangaroo", "sum" : 430 } { "_id" : "Cat", "sum" : 27 } { "_id" : "Dog", "sum" : 60 }1, dan { "_id" : "Kangaroo", "sum" : 430 } { "_id" : "Cat", "sum" : 27 } { "_id" : "Dog", "sum" : 60 }2 dari setiap dokumen
Hasil _0Dokumen 1 mengembalikan jumlah nilai input { "_id" : "Kangaroo", "sum" : 430 } { "_id" : "Cat", "sum" : 27 } { "_id" : "Dog", "sum" : 60 }3, { "_id" : "Kangaroo", "sum" : 430 } { "_id" : "Cat", "sum" : 27 } { "_id" : "Dog", "sum" : 60 }4, { "_id" : "Kangaroo", "sum" : 430 } { "_id" : "Cat", "sum" : 27 } { "_id" : "Dog", "sum" : 60 }5, dan { "_id" : "Kangaroo", "sum" : 430 } { "_id" : "Cat", "sum" : 27 } { "_id" : "Dog", "sum" : 60 }6 Namun, dua dokumen berikutnya hanya mengembalikan jumlah dari nilai input { "_id" : "Kangaroo", "sum" : 430 } { "_id" : "Cat", "sum" : 27 } { "_id" : "Dog", "sum" : 60 }3, { "_id" : "Kangaroo", "sum" : 430 } { "_id" : "Cat", "sum" : 27 } { "_id" : "Dog", "sum" : 60 }4, dan { "_id" : "Kangaroo", "sum" : 430 } { "_id" : "Cat", "sum" : 27 } { "_id" : "Dog", "sum" : 60 }5. Operator 7 mengabaikan bidang { "_id" : "Kangaroo", "sum" : 430 } { "_id" : "Cat", "sum" : 27 } { "_id" : "Dog", "sum" : 60 }2 mereka Ini karena 7 mengabaikan nilai non-numerik. Jadi dalam hal ini diabaikan { "_id" : 1, "player" : "Homer", "scores" : [ 1, 7, 2, 3, 8, 7, 1 ] } { "_id" : 2, "player" : "Marge", "scores" : [ 0, 1, 8, 17, 18, 8 ] } { "_id" : 3, "player" : "Bart", "scores" : [ 15, 11, 8, 0, 1, 3 ] } { "_id" : 4, "player" : "Brian", "scores" : [ 7 ] } { "_id" : 5, "player" : "Farnsworth", "scores" : [ ] } { "_id" : 6, "player" : "Meg", "scores" : null } { "_id" : 7, "player" : "Ron" }_3 dalam dokumen 3 dan menghitung jumlah dari bidang (numerik) yang tersisa Untuk dokumen 2, field { "_id" : "Kangaroo", "sum" : 430 } { "_id" : "Cat", "sum" : 27 } { "_id" : "Dog", "sum" : 60 }2 berisi array. Seperti disebutkan, operator _7 mengabaikan array saat menggunakan sintaks multi-argumen. Lebih tepatnya, ini memperlakukan array sebagai nilai non-numerik saat digunakan dalam konteks ini, dan 7 mengabaikan nilai non-numerikJika semua nilai non-numerik, maka 7 mengembalikan 1. Kita bisa melihat ini dengan dokumen 4Bidang yang HilangSaat menggunakan sintaks multi-argumen, 7 mengabaikan bidang yang hilang. Artinya, jika Anda menyediakan bidang yang tidak ada, bidang tersebut akan diabaikan. Jika tidak ada bidang yang ada, maka ia mengembalikan 1Contoh _1Hasil _0Dalam hal ini saya memberikan bidang tambahan ( 1) yang tidak ada dalam dokumen. _7 menghitung jumlah berdasarkan sisa kolom yang ada
Bagaimana Anda menjumlahkan nilai dalam MongoDB?Untuk mendapatkan jumlah nilai kunci di semua dokumen dalam koleksi MongoDB, Anda dapat menggunakan agregat() .
Bagaimana cara menemukan jumlah kolom di MongoDB?Jika digunakan pada bidang yang berisi nilai numerik dan non-numerik, $sum mengabaikan nilai non-numerik dan mengembalikan jumlah nilai numerik. If used on a field that does not exist in any document in the collection, $sum returns 0 for that field. If all operands are non-numeric, $sum returns 0 .
Bagaimana cara melakukan perhitungan di MongoDB?Untuk membuat kolom kalkulasi. . Di pojok panel Bidang, klik Tambahkan Bidang Pilih Terhitung Masukkan Nama Bidang dari bidang terhitung yang ingin Anda tentukan. Anda dapat menentukan bidang bersarang dengan menggunakan notasi titik. . Masukkan Ekspresi Nilai menggunakan bahasa ekspresi sederhana atau Ekspresi Operator Klik Simpan Bidang Apa itu $sum 1 di MongoDB?1 Jawaban. Di MongoDB, $sum akan menjumlahkan nilai ekspresi untuk setiap baris dan dalam kasus Anda, Anda memiliki 3 baris sehingga akan menjadi 1 . |