我正在尝试将Codeigniter与codeigniter-mongodb-library/tree/v2一起使用,以便使用此结构连接mongo和Update文档:
{
"_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有一些冲突......我错过了什么,我不知道是什么:( 我正在使用带有Codeigniter 2.1.3,PHP5.4和Apache2的Mongodb 2.2.2。
答案 0 :(得分:1)
我的方向错了。最后@Rajan指出我正确的解决方案:
$updated = $this->mongo_db->where('_id', new MongoId($id))
->set($data)
->update('mycollection');
您可以使用set
代替push
,并使用new MongoId($id)
引用对象ID: - )