我对MongoDB的先进技术不太在行。我在MongoDB收藏中的记录是:
{
"_id": ObjectId("1"),
"manager": ObjectId("12345"),
"code": "PS",
"title": "Performance System",
"users": [
{
"_user": ObjectId("1"),
"role": "Member",
},
{
"_user": ObjectId("2"),
"role": "Member",
},
{
"_user": ObjectId("3"),
"role": "Member",
}
],
}
节点. js/快速JS
我创建了API来更新阵列,如下所示,但没有工作。
const updateProjectMember = asyncHandler(async (req, res) => {
const { userID, role } = req.body.userData;
try {
const project = await Project.updateMany(
{ _id: req.params.projectID },
{ $set: { "users.$[selectedUser].role": role } },
{ arrayFilters: { "selectedUser._user": { $in: userID } } }
);
res.status(200).json(project);
} catch (error) {
res.status(400);
throw new Error(error);
}
我使用API参数来获取项目ID。
{
userID : ["2","3"];
role: "Admin"
}
因此,API将获取一个要匹配的userID数组,并将所有“role”字段设置为“Admin”以匹配所有用户。
我希望数据是这样的:
{
"_id": ObjectId("1"),
"manager": ObjectId("12345"),
"code": "PS",
"title": "Performance System",
"users": [
{
"_user": ObjectId("1"),
"role": "Member",
},
{
"_user": ObjectId("2"),
"role": "Admin",
},
{
"_user": ObjectId("3"),
"role": "Admin",
}
],
}
我做的练习正确吗?如果是糟糕的练习,解决这个问题的最好方法是什么?
1条答案
按热度按时间ffvjumwh1#
查询是好的,只要确保传递的值与MongoDB文档中的类型完全相同即可。