我试图更新嵌套数组上的数据。我能够使用位置运算符这样做,但我遇到的问题是我无法获取多个文档进行更新。我的文档结构如下:
'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,它也不会更新其他数据条目。
任何人都可以给我一个工作解决方案,如何更新所有项目名称为肥皂的数据?提前谢谢。
答案 0 :(得分:0)
选项multiple => true
对多个文档有效。您想要的是使用一个更新语句更新多个子文档。这是你做不到的。如果这是您的应用程序的要求,那么您需要更改架构,以使items
数组中的每个元素成为单独的文档。