如何使用带有php的mongodp更新多个嵌套数组文档


How do I update multiple nested array documents using mongodp with php?

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

'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)
);

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

有人能给我一个有效的解决方案,告诉我如何更新所有项目名称为soap的数据吗?提前Thankz。

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