0

我试图更新嵌套数组上的数据。我可以使用位置运算符来做到这一点,但我遇到的问题是我无法更新多个文档。我的文档结构如下:

'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。

谁能给我一个关于如何更新所有项目名称为肥皂的数据的工作解决方案?提前谢谢。

4

1 回答 1

0

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

于 2013-07-24T09:30:42.487 回答