Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在mongodb更新查询中连接变量_Node.js_Mongodb_Express_Mongoskin - Fatal编程技术网

Node.js 在mongodb更新查询中连接变量

Node.js 在mongodb更新查询中连接变量,node.js,mongodb,express,mongoskin,Node.js,Mongodb,Express,Mongoskin,我正在尝试使用Mongodb从数组中更新特定字段。为此,我尝试使用以下代码: db.collection(CG).update( { _id : ObjectId(req.params.id) }, { $set: { "cg." + req.params.index + ".nom" : req.body.nom } }, function (err, result){ res.json(result

我正在尝试使用Mongodb从数组中更新特定字段。为此,我尝试使用以下代码:

  db.collection(CG).update(
    { 
      _id : ObjectId(req.params.id) 
    },
    { 
      $set: { "cg." + req.params.index + ".nom" : req.body.nom } 
    }, 
    function (err, result){
        res.json(result);
    }
  );
但是,这种方法无法运行。这一行出现了一个问题:

$set:{“cg.”+req.params.index+“.nom”:req.body.nom}

如果我将此行更改为:

$set:{“cg.0.nom”:req.body.nom}

它运行

只是想注意。。。通过这一行,我将访问具有以下结构的“cg”元素:

据我所知,有一些解决方案(使用投影)可以使用
.find()
方法,但我无法找到或适应这种特定情况

欢迎提供任何提示/建议/新解决方案,谢谢。

尝试以下方法:

    var field = "cg." + req.params.index + ".nom"

    db.collection(CG).update(
    { 
      _id : ObjectId(req.params.id) 
    },
    { 
      $set: { field : req.body.nom } 
    }, 
    function (err, result){
        res.json(result);
    }
  );

@BlakesSeven,你说得对!谢谢!:)这就是为什么会向您展示横幅,以确认链接的“问题/答案”对您有所帮助。这是一个很常见的JavaScript符号错误。JavaScript“stringifies”键,因此update语句的意思是
“$set”:{“field”:req.body.nom}
,而不是将变量内容插入到对象中。