MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да актуализирам частично обект в MongoDB, така че новият обект да се наслагва / слее със съществуващия

Реших го със собствена функция. Ако искате да актуализирате посоченото поле в документа, трябва да го адресирате ясно.

Пример:

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

Ако искате да актуализирате само param2, е погрешно да направите:

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

Трябва да използвате:

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

Така че написах функция нещо подобно:

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. MongoDB $ne оператор на конвейер за агрегиране

  2. Намерете в Double Nested Array MongoDB

  3. $първо в mongodb

  4. Spring data mongodb не затваря mongodb връзки

  5. Вземете стойности като масив от елементи след $lookup