目前,我有一个包含如下对象的Mongo Collection:
{
"_id" : "5a1d3298dece873bfd6cf593",
"rights" : [
...
{
"module" : "messenger",
"right" : "writeToResident",
"default" : true
},
{
"module" : "messenger",
"right" : "writeToUnionCouncil",
"default" : true
},
{
"module" : "news",
"right" : "see",
"default" : true
},
...
]
}
我只是想做一些简单的事情:编辑default
数组中对象的rights
值,该数组包含module
的值“messenger”和{{1}的“writeToResident” }}
我尝试过很多像
这样的事情
right
但它不起作用。甚至可以这样做吗?
修改
在你的帮助下我尝试了这个:
const setter = {};
setter[`rights.$.${module}.${right}`] = value;
DefaultRoles.update(defaultRoleId, {
$set: setter
});
// OR
const setter = {};
setter[`rights.${module}.${right}`] = value;
DefaultRoles.update(defaultRoleId, {
$set: setter
});
但是发生了一件非常奇怪的事:有时编辑的对象不正确。
例如,当我更新DefaultRoles.update({
"_id": defaultRoleId,
"rights.module": module,
"rights.right": right
}, {
$set: {
'rights.$.default': value,
}
});
module: "manual"
时,会更新right: "write"
module: "actuality"
。