我想将mongodb文档内的对象对象内的字段增加1。

  var stuffID = 5
  collection.update({
    "id": id,
  },
  {
    '$inc': {
      'stuff.stuffID': 1
    }
  },
  function(err, doc) {
    res.end('done');
  });

我需要将stuffID设置为变量。有什么办法吗?谢谢。

如果有帮助,可以使用node-mongodb-native。

如果您要结束投票,可以解释一下您不了解的内容吗?

最佳答案

您需要分别创建可变键对象,因为ES2015之前的JS不允许使用对象文字语法中的常量字符串以外的任何形式:

var stuffID = 5
var stuff = {};                 // create an empty object
stuff['stuff.' + stuffID] = 1;  // and then populate the variable key

collection.update({
    "id": id,
}, {
    "$inc": stuff               // pass the object from above here
}, ...);

在ES2015中编辑,现在可以使用[expr]: value语法将表达式用作对象文字中的键,在这种情况下,还可以使用ES2015反引号字符串插值:
var stuffID = 5;
collection.update({
    "id": id,
}, {
    "$inc": {
        [`stuff.${stuffID}`]: 1
    }
}, ...);

上面的代码可在Node.js v4 +中运行

10-04 21:30