关注this question我收集了upsert: false
和multi: true
字段需要设置才能生效。
但是,当我尝试在PHP中编写代码时,我遇到了一个问题:
$conn = new Mongo("mongodb://foo:bar@localhost:27017");
$db = $conn->selectDB("someDB");
$data = array('$rename' => array(
'nmae' => 'name'
));
$db->command(array(
'findAndModify' => 'foo',
'update' => $data,
'upsert' => 'false',
'multi' => 'true'
));
运行此脚本后,只有nmae
拼写错误的第一个文档更改为name
;其余的人仍然说nmae
。就像我在没有upsert
和multi
选项的情况下运行它一样。
我也试过这个:
$data = array('$rename' => array(
'nmae' => 'name'
),
'upsert' => 'false',
'multi' => 'true'
);
$db->command(array(
'findAndModify' => 'foo',
'update' => $data
));
但这也是一样的。
有什么方法可以让它发挥作用吗?
答案 0 :(得分:2)
findAndModify查询没有“多”选项: http://www.php.net/manual/en/mongocollection.findandmodify.php
您可能想要使用的是更新: http://www.php.net/manual/en/mongocollection.update.php