MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

MongoDB $tambahkan

Di MongoDB, $add operator pipa agregasi menambahkan nilai bersama-sama. Nilai tersebut dapat berupa angka, atau dapat berupa angka dan tanggal.

$add operator menerima nilai sebagai argumen. Argumen dapat berupa ekspresi apa pun yang valid selama argumen tersebut menghasilkan semua angka atau angka dan tanggal.

Contoh Data

Misalkan kita memiliki koleksi yang disebut data dengan dokumen sebagai berikut:

{
	"_id" : 1,
	"a" : 100,
	"b" : 50,
	"c" : ISODate("2021-01-03T23:30:15.100Z")
}
{
	"_id" : 2,
	"a" : 20000,
	"b" : 15,
	"c" : ISODate("2019-12-08T04:00:20.112Z")
}
{
	"_id" : 3,
	"a" : 1700,
	"b" : 3,
	"c" : ISODate("2020-09-24T10:45:01.007Z")
}

Tambahkan Nomor

Kita dapat menggunakan $add operator untuk menambahkan a dan b bidang bersama-sama.

Contoh:

db.data.aggregate(
   [
     { $project: { 
       _id: 0,
       a: 1, 
       b: 1, 
       result: { 
         $add: [ "$a", "$b" ] } } 
         }
   ]
)

Hasil:

{ "a" : 100, "b" : 50, "result" : 150 }
{ "a" : 20000, "b" : 15, "result" : 20015 }
{ "a" : 1700, "b" : 3, "result" : 1703 }

Menambahkan Angka dengan Tanggal

Jika salah satu argumen adalah tanggal, argumen lainnya diperlakukan sebagai milidetik untuk ditambahkan ke tanggal.

Contoh:

db.data.aggregate(
   [
     { $project: { 
       _id: 0,
       a: 1, 
       c: 1, 
       result: { 
         $add: [ "$a", "$c" ] } } 
         }
   ]
).pretty()

Hasil:

{
	"a" : 100,
	"c" : ISODate("2021-01-03T23:30:15.100Z"),
	"result" : ISODate("2021-01-03T23:30:15.200Z")
}
{
	"a" : 20000,
	"c" : ISODate("2019-12-08T04:00:20.112Z"),
	"result" : ISODate("2019-12-08T04:00:40.112Z")
}
{
	"a" : 1700,
	"c" : ISODate("2020-09-24T10:45:01.007Z"),
	"result" : ISODate("2020-09-24T10:45:02.707Z")
}

Kita dapat melihat bahwa nilai numerik dalam a bidang telah ditambahkan sebagai milidetik ke c lapangan.

Lebih Banyak Argumen

Contoh sebelumnya menambahkan dua nilai bersama-sama, tetapi Anda dapat menambahkan lebih banyak jika diperlukan.

Berikut ini contoh menambahkan ketiga bidang bersama-sama:

db.data.aggregate(
   [
     { $project: { 
       _id: 0,
       a: 1, 
       b: 1,
       c: 1, 
       result: { 
         $add: [ "$a", "$b", "$c" ] } } 
         }
   ]
).pretty()

Hasil:

{
	"a" : 100,
	"b" : 50,
	"c" : ISODate("2021-01-03T23:30:15.100Z"),
	"result" : ISODate("2021-01-03T23:30:15.250Z")
}
{
	"a" : 20000,
	"b" : 15,
	"c" : ISODate("2019-12-08T04:00:20.112Z"),
	"result" : ISODate("2019-12-08T04:00:40.127Z")
}
{
	"a" : 1700,
	"b" : 3,
	"c" : ISODate("2020-09-24T10:45:01.007Z"),
	"result" : ISODate("2020-09-24T10:45:02.710Z")
}

Kali ini, kedua nomor ditambahkan ke tanggal.

Hanya Satu Tanggal yang Diizinkan

Meskipun Anda dapat menambahkan banyak ekspresi bersama-sama, Anda hanya dapat menyertakan satu tanggal. Melewati beberapa tanggal menghasilkan kesalahan.

Contoh:

db.data.aggregate(
   [
     { $project: { 
       _id: 0,
       a: 1, 
       b: 1,
       c: 1, 
       result: { 
         $add: [ "$c", ISODate("2020-09-24T10:45:01.007Z") ] } } 
         }
   ]
).pretty()

Hasil:

uncaught exception: Error: command failed: {
	"ok" : 0,
	"errmsg" : "only one date allowed in an $add expression",
	"code" : 16612,
	"codeName" : "Location16612"
} : aggregate failed :
[email protected]/mongo/shell/utils.js:25:13
[email protected]/mongo/shell/assert.js:18:14
[email protected]/mongo/shell/assert.js:618:17
[email protected]/mongo/shell/assert.js:708:16
[email protected]/mongo/shell/db.js:266:5
[email protected]/mongo/shell/collection.js:1046:12
@(shell):1:1

Tidak Menyampaikan Argumen

Tidak meneruskan argumen ke $add menghasilkan 0 dikembalikan.

Contoh:

db.data.aggregate(
   [
     { $project: { 
       result: { 
         $add: [  ] } } 
         }
   ]
)

Hasil:

{ "_id" : 1, "result" : 0 }
{ "_id" : 2, "result" : 0 }
{ "_id" : 3, "result" : 0 }

Meneruskan Nilai Null

Melewati null menghasilkan null .

Contoh:

db.data.aggregate(
   [
     { $project: { 
       result: { 
         $add: [ null ] } } 
         }
   ]
)

Hasil:

{ "_id" : 1, "result" : null }
{ "_id" : 2, "result" : null }
{ "_id" : 3, "result" : null }


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara mendapatkan dokumen tertanam tertentu di dalam koleksi MongoDB?

  2. Apakah saya perlu menutup koneksi luwak secara manual?

  3. Buat agregasi filter di musim semi

  4. Fungsi Azure dengan integrasi Cosmos MongoDB tidak menyimpan

  5. Mongodb - agregasi $push jika kondisional