我正在尝试更新文档(确切地说是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"}})
答案 0 :(得分:0)
当您使用PHP在MongoDB中使用_id时,请确保使用MongoId()对象包装表单响应以将字符串转换回MongoID:
$update = $collection->update(array('_id' => new MongoId($_POST['_id'])), $editMovie);
换句话说,当你从表单响应中获取id时,你基本上将MongoID“强制转换”为一个字符串,所以你需要再次将它“uncast”回MongoID。
在您根据现有标题更新的示例中,您对字符串类型进行了匹配,因此不需要强制转换。