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'
)

以下を送信するフォームを作成しました

ただし、mongoに$setしようとすると

$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) );

そして、項目配列にプッシュするには:

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