upsert脚本不起作用

丹尼斯

我正在尝试上调工作,但没有结果

我要在此脚本之前发布三个变量。如果更新,我会得到结果,但是我想更新,却没有结果。

这是我的代码:

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

更新需要3个参数数组您只通过了一个。

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

另外,您没有匹配条件(例如,查询语句以选择要更新的项目)。当使用upsert和时$set,将使用两个数组中的字段创建一个新项目(请参阅相关文档)。

最后,如果您未指定的值_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字段(要更新多个条目,您必须'multiple'=>true在options数组中指定)。如果没有匹配项,将插入一个新条目,其中包含:

  1. 产生 _id
  2. 所有匹配条件值(即organization
  3. 所有更新运算符值(即purch_codecontentname

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章