我正试图更新一个文档(正好是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。
在您的示例中,您根据现有标题进行更新,匹配字符串类型,因此不需要强制转换。