【问题标题】:MongoDB $addToSet not writing to databaseMongoDB $addToSet 未写入数据库
【发布时间】:2013-02-04 03:56:12
【问题描述】:

我不知道为什么,但我很难让 $addToSet 为我的子数组项工作。

它应该是这样的:

{
  "items": [
    {
      "id": "510bca8138fc5d6e38000000",
      "quantity": "1"
    },
    {
      "id": "51011a8138fc5d6348000000",
      "quantity": "1"
    }
  ],
  "session": "1359948849.291898629576",
  "status": "cart"
}

不过好像只允许第一个:

{
  "items": [
    {
      "id": "510bca8138fc5d6e38000000",
      "quantity": "1"
    }
  ],
  "session": "1359948849.291898629576",
  "status": "cart"
}

它只是不会插入另一个子数组。

我的代码:

$document = $collection->findOne(array('session' => $_SESSION["redi-Shop"]));
    
        //print_r($document);
        if (null !== $document) {
            $collection->update(
                array('session' => $_SESSION["redi-Shop"]),
                array(
                    '$addToSet' => array(
                        'items' => $_POST['item']
                    ),
                    
            ));
            print_r($_POST['item']);
        }
        else
        {
            $collection->insert(
                array('session' => $_SESSION["redi-Shop"],
                'status' => "cart",
                    'items' => $_POST['item'])
                );
        }
        

【问题讨论】:

  • $_POST['item'] 对您正在尝试的$addToSet 包含什么?
  • 它是一个要插入的东西的数组,
  • 如果它是一个数组,那么你应该使用$each$addToSet

标签: mongodb insert mongodb-php arrays


【解决方案1】:

我将 $addToSet 更改为 $Push,它工作正常

【讨论】:

  • 是的,但这并不意味着该值不在数组中,因此可能存在重复,这就是 $addToSet 的目的...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-06
  • 1970-01-01
  • 1970-01-01
  • 2020-08-16
  • 2012-06-16
  • 1970-01-01
  • 2011-12-11
相关资源
最近更新 更多