Database

db={"organizations":[{"_id":"1","name":"foo","users":{"1":"admin","2":"member"}},{"_id":"2","name":"bar","users":{"1":"admin"}}],"users":[{"_id":"1","name":"john smith"},{"_id":"2","name":"bob johnson"}]}

Query

db.organizations.aggregate([{$addFields:{usersArray:{$objectToArray:"$users"}}},{"$lookup":{"from":"users","localField":"usersArray.k","foreignField":"_id","as":"members"}},{$addFields:{usersArray:"$$REMOVE",members:{$map:{input:"$members",as:"m",in:{$mergeObjects:["$$m",{role:{$reduce:{input:"$usersArray",initialValue:"",in:{$cond:[{$eq:["$$this.k","$$m._id"]},"$$this.v","$$value"]}}}}]}}}}}])

Result