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

Bagaimana Anda memperbarui objek dalam larik dokumen (pembaruan bersarang)

Untuk pertanyaan #1, mari kita bagi menjadi dua bagian. Pertama, tambahkan dokumen apa pun yang memiliki "items.item_name" sama dengan "my_item_two". Untuk ini, Anda harus menggunakan operator posisional "$". Sesuatu seperti:

 db.bar.update( {user_id : 123456 , "items.item_name" : "my_item_two" } , 
                {$inc : {"items.$.price" : 1} } , 
                false , 
                true);

Perhatikan bahwa ini hanya akan menambah subdokumen pertama yang cocok dalam larik apa pun (jadi jika Anda memiliki dokumen lain dalam larik dengan "nama_item" sama dengan "barang_saya_dua", itu tidak akan bertambah). Tapi ini mungkin yang Anda inginkan.

Bagian kedua lebih rumit. Kita dapat mendorong item baru ke array tanpa "my_item_two" sebagai berikut:

 db.bar.update( {user_id : 123456, "items.item_name" : {$ne : "my_item_two" }} , 
                {$addToSet : {"items" : {'item_name' : "my_item_two" , 'price' : 1 }} } ,
                false , 
                true);

Untuk pertanyaan Anda #2, jawabannya lebih mudah. Untuk menambah total dan harga item_three dalam dokumen apa pun yang berisi "my_item_three", Anda dapat menggunakan operator $inc pada beberapa bidang secara bersamaan. Sesuatu seperti:

db.bar.update( {"items.item_name" : {$ne : "my_item_three" }} ,
               {$inc : {total : 1 , "items.$.price" : 1}} ,
               false ,
               true);


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $cos

  2. Migrasi MongoDB ke DynamoDB, Bagian 1

  3. Otomatiskan Pemeriksaan Konfigurasi Basis Data

  4. Cadangan MongoDB sebagai teks daripada biner untuk kontrol sumber

  5. MongoDB $min