在CodeIgniter中使用MongoDB进行更新时出现以下错误:
public function update()
{
$userdata['firstname'] = $this->input->post('txtfirstname');
$userdata['lastname'] = $this->input->post('txtlastname');
$userdata['email'] = $this->input->post('txtemail');
$userdata['password'] = md5($this->input->post('txtpassword'));
$userdata['_id'] = $this->input->post('hiddenId');
$collection= $this->mongo_model->updateuserdb($userdata);
if ($collection)
{
header('location:'.base_url()."index.php/user".$this->index());
}
}
这是我的控制器代码
public function updateuserdb($userdata)
{
$id = $userdata['_id'];
$collection = $this->mongo_db->db->selectCollection('myfirstCollection');
$query = $collection->update(array('_id' => new MongoId($id)), array('$set' => $userdata), array('upsert' => FALSE));
return $query;
}
和型号代码是
AndroidManifest.xml
答案 0 :(得分:6)
您无法更新_id
字段。
请注意,您的$userdata
对象变量包含_id
字段,然后继续传递该$userdata
对象作为要更新的值。因此,您正在尝试更新_id
字段。
执行'$ set'=> $ userdata 时,您需要从_id
移除$userdata
。
$collection->update(array('_id'=>new MongoId($id)),array('$set'=>$userdata),array('upsert'=>FALSE));