Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在MongoDB中更新数组中的多个值_Php_Mongodb - Fatal编程技术网

Php 在MongoDB中更新数组中的多个值

Php 在MongoDB中更新数组中的多个值,php,mongodb,Php,Mongodb,我尝试使用Update在现有集合中添加一些值,但仅检索最后一个值: 例如: 当我尝试在MongoDB中向此文档添加一个具有不同值的数组时,如下所示: $test= array("one"=>"Item1","two"=>"Item2","three"=>"Item3","four"=>"Item4", "five"=>"Item5","six"=>"Item6"); $collectionMeasurements->insert($tes

我尝试使用Update在现有集合中添加一些值,但仅检索最后一个值:

例如:

当我尝试在MongoDB中向此文档添加一个具有不同值的数组时,如下所示:

   $test=
array("one"=>"Item1","two"=>"Item2","three"=>"Item3","four"=>"Item4",
  "five"=>"Item5","six"=>"Item6");

  $collectionMeasurements->insert($test);
  for($i=0;$i<5;$i++){
   $collectionMeasurements->update(
         array("one" => "Item1"),
         array('$set' => array('new' => $i)),
         array("multiple" => true)
  );

  } 
我想得到这样的东西:

Array
  (
   [_id] => MongoId Object
    (
    )

[five] => Item5
[four] => Item4
[new] => array(1,2,3,4)
[one] => Item1
[six] => Item6
[three] => Item3
[two] => Item2
 )
有什么建议我可以做到这一点吗?
谢谢

这就是问题所在。您可以在脚本的每次迭代中覆盖一个键的值
new

你要做的是以下几点

$arr = array()
for($i=0;$i<5;$i++){
   arr[$i] = $i; // or initialize array in a normal way
}

$collectionMeasurements->update(
   array("one" => "Item1"),
   array('$set' => array('new' => $arr)),
   array("multiple" => true)
);
$arr=array()
对于($i=0;$i更新)(
数组(“一个”=>“项1”),
数组('$set'=>array('new'=>$arr)),
数组(“多个”=>true)
);

将mongo输出作为普通的json而不是php打印文件发布
$arr = array()
for($i=0;$i<5;$i++){
   arr[$i] = $i; // or initialize array in a normal way
}

$collectionMeasurements->update(
   array("one" => "Item1"),
   array('$set' => array('new' => $arr)),
   array("multiple" => true)
);