使用带有索引变量的$ set来更新文档

时间:2017-04-30 22:25:32

标签: javascript node.js mongodb

  

对于匹配条件_id等于100的文档,以下内容   操作更新值的第二个元素(数组索引为1)   标签字段和第一个元素中的评级字段(数组索引)   0)等级数组。

db.products.update(
   { _id: 100 },
   { $set:
      {
        "tags.1": "rain gear",
        "ratings.0.rating": 2
      }
   }
)

以上是mongodb $set documentation的引用,我将如何为索引添加变量,而不是"tags.1"它变为"tags."+index

例如,如果index等于7,则返回等效的"tags.7"

这是我的代码:

Users.findOneAndUpdate({'username': post.username}, { 
  $set: {
    "notifications.0": { 
      'id': post._id,  'message': post.message,  'amount': amount 
    } 
  } 
}, function () {})

它完美无缺,但仅仅因为我将0硬编码为索引。我想用0变量替换硬编码的index

1 个答案:

答案 0 :(得分:0)

像这样构建查询

var key = "notifications."+index;
var obj = {};
obj[key] = { 'id': post._id, 'message': post.message, 'amount': amount };
Users.findOneAndUpdate({'username': post.username}, { $set: obj }, function () {}