upsert脚本无效

时间:2016-06-04 21:10:50

标签: php mongodb upsert

我正试图让人工作并且没有结果

我在此脚本之前发布了三个变量。如果我更新,我得到结果,但我想要upsert并且没有结果。

这是我的代码:

Var 1: c | Var 2: 2 | Var 3: d
Var 1: e | Var 2: 3 | Var 3: f
Var 1: g | Var 2: 4 | Var 3: h

2 个答案:

答案 0 :(得分:1)

您在单引号上设置了变量$     ' $设置' =>阵列(

答案 1 :(得分:1)

Update expects 3 argument arrays。你只通过了一个。

首先,您已将选项作为$set数组的一部分包含在内。它们应该在update子句之后作为单独的参数传递。

此外,您没有匹配条件(即,查询语句以选择要更新的项目)。使用upsert和$set时,将使用两个数组(see the relevant documentation)中的字段创建一个新项目。

最后,如果您没有为_id指定值,Mongo会为您生成一个。

例如,如果您想根据organization字段进行匹配:

if(isset($_POST)){
    if($array){
        $doc = $collection->update(
            array('organization' => $mysql_org_name),
            array(
                '$set' => array(
                    'purch_code' => $mysql_purch_code,
                    'contentname' => $mysql_order_item_name,
                )
            ),
            array('upsert' => true)
        );
    }
}

如果匹配一个或多个条目,则只会在第一个匹配对象上更新purch_codecontentname字段(要更新多个条目,您必须指定{{1在您的选项数组中)。如果没有匹配,将插入一个新条目:

  1. 生成的'multiple'=>true
  2. 所有匹配条件值(即_id
  3. 所有更新运算符值(即organizationpurch_code