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

Bagaimana cara memperbarui sebagian objek di MongoDB sehingga objek baru akan overlay/bergabung dengan yang sudah ada

Saya menyelesaikannya dengan fungsi saya sendiri. Jika Anda ingin memperbarui bidang tertentu dalam dokumen, Anda harus mengatasinya dengan jelas.

Contoh:

{
    _id : ...,
    some_key: { 
        param1 : "val1",
        param2 : "val2",
        param3 : "val3"
    }
}

Kalau mau update param2 saja salah caranya:

db.collection.update(  { _id:...} , { $set: { some_key : new_info  } }  //WRONG

Anda harus menggunakan:

db.collection.update(  { _id:...} , { $set: { some_key.param2 : new_info  } } 

Jadi saya menulis fungsi seperti itu:

function _update($id, $data, $options=array()){

    $temp = array();
    foreach($data as $key => $value)
    {
        $temp["some_key.".$key] = $value;
    } 

    $collection->update(
        array('_id' => $id),
        array('$set' => $temp)
    );

}

_update('1', array('param2' => 'some data'));


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Django-nonrel vs Django-mongodb vs Mongokit vs pymongo asli

  2. Spring Data MongoDB – Indeks, Anotasi, dan Konverter

  3. Tip Manajemen Pencadangan MongoDB untuk Cluster Sharded

  4. Cara Menyebarkan ClusterControl di AWS untuk Mengelola Database Cloud Anda

  5. Bagaimana cara mengakses koleksi yang sudah ada sebelumnya dengan Mongoose?