我试图更新嵌套数组上的数据。我可以使用位置运算符来完成此操作,但我遇到的问题是无法更新多个文档。我的文档结构如下:
'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
数组中的每个元素都成为单独的文档。