mongodb中的多个文档更新问题

时间:2012-03-21 14:21:06

标签: mongodb mongodb-php

如果选择器(第一个参数)在集合中选择多个文档,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不会执行任何操作。

1 个答案:

答案 0 :(得分:3)

只要第二个语句匹配任何内容,它就应该始终更新单个文档。

如果您希望它应用于多个文档,您应该传递多个标记,如此处所述。

http://www.php.net/manual/en/mongocollection.update.php

在您的情况下,查询应显示为:

$addresses->update(array('home' => 'canada'),
           array('$set' => array('zip' => 20)),
           array('multiple' => true)
);