MongoDB php update返回现有文档的错误

时间:2013-12-08 22:04:56

标签: php json mongodb

我正在尝试更新文档(确切地说是1个字段),但是我遇到了意外错误(shell更新工作正常)。没有字段更新。

OPERATION:

$_POST['title_en'] = 'skyfall';
$editMovie = array('$set'=>array('title_en'=>$_POST['title_en']));
//JSON: {"$set":{"title_en":"Skyfall"}} 
$update = $collection->update(array('_id'=>$_POST['_id']), $editMovie);

返回值:

array(5) { ["updatedExisting"]=> bool(false) ["n"]=> int(0) ["connectionId"]=> int(9) ["err"]=> NULL ["ok"]=> float(1) } 

SHELL COMMAND WORKS喜欢魅力:

db.movies.update({"title_en":"skyfall"}, {$set:{"title_en":"Skyfall"}})

1 个答案:

答案 0 :(得分:0)

当您使用PHP在MongoDB中使用_id时,请确保使用MongoId()对象包装表单响应以将字符串转换回MongoID:

$update = $collection->update(array('_id' => new MongoId($_POST['_id'])), $editMovie);

换句话说,当你从表单响应中获取id时,你基本上将MongoID“强制转换”为一个字符串,所以你需要再次将它“uncast”回MongoID。

在您根据现有标题更新的示例中,您对字符串类型进行了匹配,因此不需要强制转换。