使用MongoDB驱动程序,我尝试在数据库中更新_id字段。
我的代码
function update_attributes($id, $data){
$this->db_model->where('_id', $id);
$this->db_model->updates = array('$set' => array($data));
$query = $this->db_model->update('dff');
return $query;
}
$data
$form_data = array(
'name' => set_value('name'),
'description' => set_value('description')
);
$dfff = Dfff::update_attributes($this->input->post('id', TRUE), $form_data);
但它不会更新数据库。 我收到错误为
Update of data into MongoDB failed: localhost:27017: Invalid modifier specified: $set
问题出在哪里??使用MongoDB驱动程序-亚历克斯比尔比
这是
MongoDB服务器在更新过程中将修饰符"$set"与普通变量混合时引发的异常。这在 shell 和 PHP Mongo 中都可以观察到。这可能是由于更新行为的差异,当您使用"$set"时,只会部分更新对象,而后者(使用公共字段/变量)实际上会覆盖整个文档对象,这是一个功能冲突。
来源:http://ulaptech.blogspot.co.uk/2011/08/mongo-invalid-modifier-specifiedvar.html
[已解决] 提供给update_attributes
函数的_id数据类型为字符串,其中数据库中的数据类型为 Int32x。 因此,由于数据类型不匹配,更新失败。通过将函数中的数据类型也设置为Int32X。更新成功。之前这样改过:
$dfff = Dfff::update_attributes($this->input->post('id', TRUE), $form_data);
更改 ID 的数据类型后:
$dfff = Dfff::update_attributes($id, $form_data);