Mongodb插入现有数组

时间:2016-08-18 23:43:50

标签: php arrays mongodb

嘿我在将元素插入现有mongodb文档时遇到问题。 目前,我的数据库中有一个包含单个元素的数组:

$count = array();
array_push($count, 0);
$dbase->insert(array("_id"=> $_id,"count"=>$count));

但是我现在希望将一个元素插回到" count数组"在环顾四周后,这是推荐的方式:

 $count=4;
 $dbase->update(array('_id'=>'57b35f7bce23505c10000029'),array('$count'=>$count));

然而,这是一个错误(错误500,内部服务器错误),我不确定为什么。我也尝试使用插入,但它导致创建一个新文档。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

虽然我不确定你为什么需要一个数组,但有几种方法可以更新数组及其成员......

连接到数据库/集合

$m = new MongoClient();
$db = $m->your_database;
$collection = $db->your_colection;

更新数组的一个成员

如果您想更新阵列的一个成员(在本例中为0成员),您可以...

$collection->update(
  array("_id"=> new MongoId("57b6556aa9087c06687ecd7c")),
  array('$set'=>array("count.0"=> 4))
);

添加到数组

如果您想在阵列中添加新项目,您可以进行计数...

$collection->update(
  array("_id"=> new MongoId("57b6556aa9087c06687ecd7c")),
  array('$push'=>array("count"=> 4))
);

现在,您将在阵列中拥有两个成员。

注意:仅当count确实是数组时才会有效。

更新/更改“计数”为数字

$collection->update(
  array("_id"=> new MongoId("57b35f7bce23505c10000029")), 
  array('$set'=>array("count"=> 4))
);

这将转换数字中的数组。

通常,我建议不要在这里使用数组,除非您确实需要存储多个值。

此外,根据您的MongoDB PHP驱动程序版本,您可能需要使用:

new MongoDB\BSON\ObjectID();代替new MongoId();