对于匹配条件_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
。
答案 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 () {}