我想使用$ push将元素推送到子功能嵌套文档。但是,当我使用这样的模块。$。features。$。subFeatures'' 它给了我多位置操作员错误。所以我得到的功能文档索引为x,但我无法弄清楚我可以将该值附加到查询的方式。 '模块$ features.x.subFeatures'没有工作。
var x =2;
RolePermission.update({
'role': roleID,
'modules.name' : data.module,
'modules.features.name': data.feature
}, {
$push:{
'modules.$.features.x.subFeatures': {
name: data.name,
value: false,
icon: data.icon
}
}
}
}, {
upsert: true
}, function (err, event) {
});
答案 0 :(得分:1)
您可以通过多种方式实现:
$push:{
[`modules.$.features.${x}.subFeatures`]: {
name: data.name,
value: false,
icon: data.icon
}
}

var push = {$push: {}};
push.$push['modules.$.features.' + x + '.subFeatures'] = {
name: data.name,
value: false,
icon: data.icon
};
RolePermission.update({
'role': roleID,
'modules.name' : data.module,
'modules.features.name': data.feature
},
push,
{
upsert: true
}, function (err, event) {
});