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"}])