MongoDB php更新为现有文档返回错误


MongoDB php update returns error for existing document

我正试图更新一个文档(正好是1个字段),但遇到了意外错误(shell更新工作正常)。未更新任何字段。

操作:

$_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命令就像一个符咒:

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

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

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

换句话说,当你从表单响应中获取id时,你基本上已经将MongoID"强制"回一个字符串,所以你需要再次将其"取消强制"回MongoID。

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