我有像这样的猫鼬数据:
{
"_id" : ObjectId("58e394cacaa6512ed00e8d83"),
"RoleName" : "Manager",
"UIList" : [
{
"Edit" : false,
"View" : false,
"UiName" : "ElevatorMapping"
},
{
"Edit" : false,
"View" : false,
"UiName" : "ElevatorAssumptions"
},
{
"Edit" : false,
"View" : false,
"UiName" : "ManageUnits"
},
{
"Edit" : false,
"View" : false,
"UiName" : "ManageBuildings"
}
],
"__v" : 0,
"Description" : "fd",
"IsActive" : true
}
现在我想在UIname中更新UILIST:“ElevatorMapping”&“Elevator Assumptions”查看和编辑为True。如何为此编写查询?我尝试了类似下面的内容。
这是我的控制器页面。
$http.put('/ViewEditupdate/' + id +'/' + uiname + '/' + view + '/' + edit).then(function (response) {
refresh();
})
此处正确获取了id值,但未采用编辑视图UI名称。编辑,视图名称被视为未定义。
我的server.js代码
app.put('/ViewEditupdate/:id/:uiname/:view/:edit', RoleEntrypath.RoleViewEditupdate);
我的架构代码
newRole.update({ "UIList.UiName": "ManageRole" }, { "$push": { "UIList.$.View": "true", "UIList.$.Edit": "true" } },
function (err, doc) {
res.json(doc);
}
);
任何人都可以提供解决方案吗?
答案 0 :(得分:1)
您应使用$set
代替$push
将view
的值从false
更改为true
。
试试这个:
newRole.update({
"UIList.UiName": "ManageRole"
},{
$set: { "UIList.$.View": "true", "UIList.$.Edit": "true" }
},function (err, doc) {
res.json(doc);
});
答案 1 :(得分:0)
我已经使用此查询进行了更新。
newRole.update
(
{
_id: id,
"UIList.UiName": "ManageRole"
},
{
$set: {
"UIList.$.View": "true",
"UIList.$.Edit": "true"
}
},
function (err, doc) {
res.json(doc);
}
);