0

我尝试使用 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
 )

请对我如何做到这一点有任何建议吗?谢谢!!!

4

1 回答 1

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)
);
于 2013-11-11T08:56:23.573 回答