如何使用mongodb和php更新多个嵌套数组文档?

时间:2013-07-24 09:27:04

标签: php mongodb

我试图更新嵌套数组上的数据。我能够使用位置运算符这样做,但我遇到的问题是我无法获取多个文档进行更新。我的文档结构如下:

'items' => array (
    0 => array (    
        'name' => 'soap',
        'qty' => 5,
        'price' => 2.5,
    ),
    1 => 
        array (
        'name' => 'soap',
        'qty' => 5,
        'price' => 2.5,
    ),
);

我想更新'name'=&> soap的所有名称字段。我写了以下代码:

$newdata = array('$set'=> array('items.$.name'=> "paste"));

$collection->update(
    array('items.name' => "soap"),
    $newdata,
    array("multiple"=>true)
);

上述代码适用于第一个条目,但即使多个选项设置为true,它也不会更新其他数据条目。

任何人都可以给我一个工作解决方案,如何更新所有项目名称为肥皂的数据?提前谢谢。

1 个答案:

答案 0 :(得分:0)

选项multiple => true对多个文档有效。您想要的是使用一个更新语句更新多个子文档。这是你做不到的。如果这是您的应用程序的要求,那么您需要更改架构,以使items数组中的每个元素成为单独的文档。