将数据更新到 MongoDB 失败


Update of data into MongoDB failed

使用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);