Database

db={"users":[{"_id":"1","groups":["2"]},{"_id":"2","groups":["1"]}],"group":[{"_id":"1","permissions":["12","3"]},{"_id":"2","permissions":["3","2"]}],"permission":[{"_id":"12","valid":true},{"_id":"3","valid":true},{"_id":"2","valid":true}]}

Query

db.users.aggregate([{$lookup:{from:"group",localField:"groups",foreignField:"_id",as:"group"}},{$lookup:{from:"permission",localField:"group.permissions",foreignField:"_id",as:"group"}},{"$match":{"group.valid":true}},{$unset:"group"}])

Result