MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm cách nào để cập nhật một phần đối tượng trong MongoDB để đối tượng mới sẽ chồng / hợp nhất với đối tượng hiện có

Tôi đã giải quyết nó bằng chức năng của riêng mình. Nếu bạn muốn cập nhật trường cụ thể trong tài liệu, bạn cần giải quyết nó một cách rõ ràng.

Ví dụ:

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

Nếu bạn chỉ muốn cập nhật param2, bạn thực hiện sai:

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

Bạn phải sử dụng:

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

Vì vậy, tôi đã viết một hàm tương tự như vậy:

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. Percona Live Frankfurt 2018 - Tóm tắt sự kiện và các phiên của chúng tôi

  2. MongoDB:Làm thế nào để phân tích cú pháp ngày trong phiên bản 3.6 mongoDb?

  3. Làm mới trang Meteor bằng cách nhấp vào nút

  4. Làm cách nào để lấy lại giá trị mới sau khi cập nhật trong một mảng được nhúng?

  5. Người dùng root MongoDB