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

时间:2013-11-11 08:50:30

标签: php mongodb

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

一个例子:

当我尝试在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] => 4
[one] => Item1
[six] => Item6
[three] => Item3
[two] => Item2
 )

我想得到类似的东西:

Array
  (
   [_id] => MongoId Object
    (
    )

[five] => Item5
[four] => Item4
[new] => array(1,2,3,4)
[one] => Item1
[six] => Item6
[three] => Item3
[two] => Item2
 )

有关我如何能够做到这一点的任何建议吗? 谢谢!!!

1 个答案:

答案 0 :(得分:0)

这是问题所在。在脚本的每次迭代中,你都会覆盖键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)
);