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.