0

我想在 MongoDB 中更新我的子数组 这是 MongoDB 集合的样子

    array (
      '_id' => new MongoId("510fb81638fc5d2966000000"),
      'items' => 
      array (
        '0' => 
        array (
          'id' => '510bb69538fc5d0c2d000000',
          'quantity' => '1',
        ),
        '1' => 
        array (
          'id' => '510bca8138fc5d6e38000000',
          'quantity' => '1',
        ),
      ),
      'session' => '1359964785.85203874781',
      'status' => 'cart'
)

我创建了我的表单以发送以下内容

但是,当我尝试将其 $set 为 mongo

$filter =  array('session' => $_SESSION["redi-Shop"]);
$data2 = array(
                '$set' => array($_POST['items'])
            );
$options = array("upsert" => true);
$collection->update( $filter, $data2, $options );

好像没有更新

4

2 回答 2

1

你的设置是错误的:

$filter =  array('session' => $_SESSION["redi-Shop"]);
$data2 = array('$set' =>array('items' => array($_POST['items'])));

$options = array("upsert" => true);
$collection->update( $filter, $data2, $options );

我应该提到$_POST以这种方式使用是要求某人入侵您的购物网站。

于 2013-02-04T14:32:15.960 回答
0

正如 Sammaye 所说,您忽略了您的查询。而且,您要更新、替换还是推送到数组?

替换所有项目:

$data2 = array('$set' => array('items' => array($_POST['items'])));
$collection->update( array('session' => $_SESSION["redi-Shop"]), $data2, array("upsert" => true) );

更新第一个项目数组:

$data2 = array('$set' => array('items.0' => $_POST['items']));
$collection->update(array('session' => $_SESSION["redi-Shop"]), $data2, array("upsert" => true) );

送到 items 数组:

$data2 = array('$push' => array('items' => $_POST['items']));
$collection->update(array('session' => $_SESSION["redi-Shop"]), $data2, array("upsert" => true) );
于 2013-02-04T14:59:40.370 回答