0

using mongodb driver i try to update in database referring _id field.

my code

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

but it does not update the database. i get the error as

Update of data into MongoDB failed: localhost:27017: Invalid modifier specified: $set

where is the problem ?? using mongodb driver-alexbilbie

4

2 回答 2

1

[已解决]update_attributes函数的 _id 数据类型是字符串,其中数据库中的数据类型是 int32x。因此更新失败,因为数据类型不匹配。通过使函数中的数据类型也为 int32x。更新成功。之前改成这样:

$dfff = Dfff::update_attributes($this->input->post('id', TRUE), $form_data);

更改 id 的数据类型后:

$dfff = Dfff::update_attributes($id, $form_data);
于 2013-10-17T11:06:00.907 回答
1

这是 MongoDB 服务器在更新过程中将修饰符“$set”与普通变量混合时抛出的异常。这在 shell 和 PHP Mongo 中都可以观察到。这可能是由于更新行为的差异,当您使用“$set”时只会部分更新对象,而后者(使用公共字段/变量)实际上会覆盖整个文档对象,这是功能冲突。

来源:http : //ulaptech.blogspot.co.uk/2011/08/mongo-invalid-modifier-specifiedvar.html

于 2013-10-16T11:19:13.887 回答