0

我正在尝试将 Codeigniter 与codeigniter-mongodb-library/tree/v2一起使用,以便与 mongo 连接并使用以下结构更新文档:

{
"_id" : ObjectId("50fd8bd460e958aa38000002"),
"created_at" : 1358793684,
"updated_at" : 1358793684,
"is_active" : 0,
"memberships" : [
    {
    }
],
"first_models" : [
    [ ]
],
"second_models" : [
    [ ]
],
"pages" : [
    [ ]
]
}

我想要的只是通过给定_id来更新一些文档。特别是我需要在“first_models”数组中添加元素。从我的 Codeigniter 模型中,我称之为:

$result = $this->mongo_db
->push(array('_id' => '50fd8bd460e958aa38000002'),array('first_models' => array('Some text here'))) 
->update($this->collections['sites']); 

当我尝试更新一个特定文档时出现此错误:

Mod on _id not allowed

似乎与给定的 _id 存在一些冲突......我遗漏了一些东西,我不知道是什么:(我正在使用 Mongodb 2.2.2 和 Codeigniter 2.1.3、PHP5.4 和 Apache2。

4

1 回答 1

1

我走错了方向。最后@Rajan指出我正确的解决方案:

$updated = $this->mongo_db->where('_id', new MongoId($id))
->set($data)
->update('mycollection');

您可以看到,使用setinstead ,并使用:-)push引用对象 idnew MongoId($id)

于 2013-01-23T14:08:01.193 回答