问题描述
{
"_id":ObjectId("5f78303c2c0a3b33230bd527"),"name":"Name","invites":[
{"email":"some@exaple.com","status":false,"roleId":ObjectId("5f78303c2c0a3b33230bd525")},{"email":"some1@exaple.com","status":true,"roleId":ObjectId("5f78303c2c0a3b33230bd525")}
],"users":[
{
"userId":ObjectId("5f782c8b06d5e531033ccd0c"),"roleId":ObjectId("5f78303c2c0a3b33230bd525")
},]
}
我想向该用户的邀请数组中具有相同角色ID的用户数组更新/推送新元素
我尝试了一个UpdateOne,但没有成功。因此,我首先从该文档中获取了角色ID,然后使用角色ID进行了更新。现在是我的代码。
const role = await coll.findOne(
{
_id : documentId
},{
projection: {
'invites.roleId':1,invites : {$elemmatch:{email:user.email,status:false}}
}
});
if(role.length > 0)
{
var userRole = role.invites[0].roleId;
const result = await coll.updateOne(
{
_id : documentId,"invites.email" : user.email,"invites.status" : false
},{ $set: {
"invites.$.status" : true
},$push: {
users: {
'userId' : user._id,"roleId" : userRole
}
}
}
);
}
这是正确的方法吗?还是可以在单个updateOne查询中做到这一点?
Mongo DB版本:4.2.9
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)