Database

db={"users":[{"email":"admin@test.com","password":"xxxxxxxx","roles":[{"id":0,"approved":true},{"id":2,"approved":true}]},{"name":"userOne","email":"user@test.com","password":"xxxxxxxx","roles":[{"id":1,"approved":true}]}],"roles":[{"id":0,"name":"administrator"},{"id":1,"name":"employeer"},{"id":2,"name":"freelancer"}]}

Query

db.users.aggregate([{"$unwind":"$roles"},{"$lookup":{"from":"roles","let":{"roleId":"$roles.id","approved":"$roles.approved"},"pipeline":[{"$match":{"$expr":{"$eq":["$id","$$roleId"]}}},{$addFields:{approved:"$$approved"}}],"as":"roles"}},{"$unwind":"$roles"},{"$group":{"_id":"$_id","email":{"$first":"$email"},"password":{"$first":"$password"},"roles":{"$push":"$roles"}}},])

Result