如果选择器(第一个参数)在集合中选择多个文档,MongoDB是否支持多个文档更新。
在下面的示例中,第一个工作正常,因为它只选择特定文档并修改zip值。
虽然在第二种情况下,集合$ address有多个文件,其中'home'=> '加拿大',它不会更新任何内容。
有人可以帮帮我吗?
$addresses->update(array('_id' => new MongoId('4f69de380c211d6c21000001')),
array('$set' => array('zip' => 20)));
$addresses->update(array('home' => 'canada')),
array('$set' => array('zip' => 20)));
编辑:
等效的javascript命令
db.addresses.update({home: "canada"}, {$set: {zip: 20}})
更新第一次遇到的匹配的zip值,这是预期的行为。
console命令正在更新至少一个文档,如果选择器匹配多个文档,则PHP不会执行任何操作。
答案 0 :(得分:3)
只要第二个语句匹配任何内容,它就应该始终更新单个文档。
如果您希望它应用于多个文档,您应该传递多个标记,如此处所述。
http://www.php.net/manual/en/mongocollection.update.php
在您的情况下,查询应显示为:
$addresses->update(array('home' => 'canada'),
array('$set' => array('zip' => 20)),
array('multiple' => true)
);