Bagaimana Anda mendapatkan jumlah semua bidang di mongodb?

Di MongoDB, operator pipa agregasi { $sum: [ <expression1>, <expression2> .. ] }_7 menghitung dan mengembalikan jumlah nilai numerik

Sintaksis

Operator { $sum: [ <expression1>, <expression2> .. ] }7 mendukung dua sintaks

Sintaks 1

{ $sum: <expression> }

Sintaks 2

{ $sum: [ <expression1>, <expression2> .. ] }

Sintaks pertama menerima satu argumen dan sintaks kedua menerima banyak argumen

Saat digunakan dalam tahap { $sum: [ <expression1>, <expression2> .. ] }_9, Anda hanya dapat menggunakan sintaks pertama. Dalam hal ini, { $sum: [ <expression1>, <expression2> .. ] }_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 kunci

Contoh Sintaks 1 (Argumen Tunggal)

Berikut adalah beberapa contoh yang menggunakan sintaks 1

Dokumen yang Dikelompokkan

Contoh ini menggunakan { $sum: [ <expression1>, <expression2> .. ] }7 bersamaan dengan { $sum: [ <expression1>, <expression2> .. ] }9 untuk mengembalikan jumlah pada sekelompok dokumen yang dikelompokkan berdasarkan kunci

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 }_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 { $sum: [ <expression1>, <expression2> .. ] }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

db.pets.aggregate( [ { $group: { _id: "$type", sum: { $sum: "$weight" } } } ] )

Hasil

{ "_id" : "Kangaroo", "sum" : 430 } { "_id" : "Cat", "sum" : 27 } { "_id" : "Dog", "sum" : 60 }

Array

Contoh ini berlaku { $sum: [ <expression1>, <expression2> .. ] }_7 ke satu dokumen yang berisi bidang dengan larik nilai

Opsi 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 { $sum: [ <expression1>, <expression2> .. ] }_7 ke bidang db.pets.aggregate( [ { $group: { _id: "$type", sum: { $sum: "$weight" } } } ] )0 di setiap dokumen

db.players.aggregate( [ { $project: { player: 1, sum: { $sum: "$scores" } } } ] )

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 db.pets.aggregate( [ { $group: { _id: "$type", sum: { $sum: "$weight" } } } ] )_1 karena kami menyediakan larik kosong

Dokumen 6 mengembalikan db.pets.aggregate( [ { $group: { _id: "$type", sum: { $sum: "$weight" } } } ] )_1 karena kami memberikan db.pets.aggregate( [ { $group: { _id: "$type", sum: { $sum: "$weight" } } } ] )3 sebagai argumen

Dokumen 7 mengembalikan db.pets.aggregate( [ { $group: { _id: "$type", sum: { $sum: "$weight" } } } ] )_1 karena bidangnya bahkan tidak ada

Contoh Sintaks 2 (Beberapa Argumen)

Sintaks kedua melibatkan penyediaan { $sum: [ <expression1>, <expression2> .. ] }_7 dengan lebih dari satu argumen. { $sum: [ <expression1>, <expression2> .. ] }7 kemudian menghitung jumlah berdasarkan semua argumen yang disediakan

Misalkan kita memiliki koleksi bernama db.pets.aggregate( [ { $group: { _id: "$type", sum: { $sum: "$weight" } } } ] )_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 { $sum: [ <expression1>, <expression2> .. ] }7 untuk mengembalikan jumlah bidang db.pets.aggregate( [ { $group: { _id: "$type", sum: { $sum: "$weight" } } } ] )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

db.data.aggregate( [ { $project: { sum: { $sum: [ "$a", "$b", "$c", "$d" ] } } } ] )

Hasil

{ $sum: [ <expression1>, <expression2> .. ] }0

Dokumen 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 { $sum: [ <expression1>, <expression2> .. ] }7 mengabaikan bidang { "_id" : "Kangaroo", "sum" : 430 } { "_id" : "Cat", "sum" : 27 } { "_id" : "Dog", "sum" : 60 }2 mereka

Ini karena { $sum: [ <expression1>, <expression2> .. ] }_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

Sedangkan untuk dokumen 2, bidang { "_id" : "Kangaroo", "sum" : 430 } { "_id" : "Cat", "sum" : 27 } { "_id" : "Dog", "sum" : 60 }2 berisi array. Seperti disebutkan, operator { $sum: [ <expression1>, <expression2> .. ] }_7 mengabaikan array saat menggunakan sintaks multi-argumen. Lebih tepatnya, ini memperlakukan array sebagai nilai non-numerik saat digunakan dalam konteks ini, dan { $sum: [ <expression1>, <expression2> .. ] }7 mengabaikan nilai non-numerik

Jika semua nilai non-numerik, maka { $sum: [ <expression1>, <expression2> .. ] }7 mengembalikan db.pets.aggregate( [ { $group: { _id: "$type", sum: { $sum: "$weight" } } } ] )1. Kita bisa melihat ini dengan dokumen 4

Bidang yang Hilang

Saat menggunakan sintaks multi-argumen, { $sum: [ <expression1>, <expression2> .. ] }7 mengabaikan bidang yang tidak ada. Artinya, jika Anda menyediakan bidang yang tidak ada, bidang tersebut akan diabaikan. Jika tidak ada bidang yang ada, maka ia mengembalikan db.pets.aggregate( [ { $group: { _id: "$type", sum: { $sum: "$weight" } } } ] )1

Contoh

{ $sum: [ <expression1>, <expression2> .. ] }_1

Hasil

{ $sum: [ <expression1>, <expression2> .. ] }0

Dalam hal ini saya memberikan bidang tambahan (db.players.aggregate( [ { $project: { player: 1, sum: { $sum: "$scores" } } } ] )1) yang tidak ada dalam dokumen. { $sum: [ <expression1>, <expression2> .. ] }7 menghitung jumlah berdasarkan sisa kolom yang ada

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 .

Bagaimana MongoDB menghitung jumlah gaji?

$sum operator mengembalikan jumlah semua nilai numerik dokumen dalam koleksi di MongoDB . Di atas akan membuat koleksi (atau tabel) (jika koleksi sudah ada akan memasukkan dokumen di dalamnya). Langkah 2. 1 - Kami akan mengelompokkan karyawan berdasarkan nama depan dan menemukan jumlah gaji setiap grup.

Postingan terbaru

LIHAT SEMUA