Node js Mongo DB驱动程序-使用同一文档中另一个数组的值将新元素推入数组

问题描述

我在一个收藏夹中有一个文档

{
 "_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 (将#修改为@)