Database

[{"_id":0,"name":"aimee Zank","scores":[{"score":10.463179736705023,"type":"exam"},{"score":11.78273309957772,"type":"quiz"},{"score":75.8740349954354,"type":"homework"}]},{"_id":1,"name":"Tomas Jude","scores":[{"score":55.9736705023,"type":"exam"},{"score":50.78273309957772,"type":"quiz"},{"score":45.8740349954354,"type":"homework"}]}]

Query

db.collection.aggregate([{/** create array of pass status*/"$set":{"pass":{"$map":{"input":"$scores","as":"score","in":{"$switch":{"branches":[{"case":{"$eq":["$$score.type","exam"]},"then":{"exam":{"$gt":["$$score.score",40]}}},{"case":{"$eq":["$$score.type","quiz"]},"then":{"quiz":{"$gt":["$$score.score",40]}}},{"case":{"$eq":["$$score.type","homework"]},"then":{"homework":{"$gt":["$$score.score",40]}}}],"default":"$$score"}}}}}},{"$match":{"pass.exam":true,"pass.quiz":true,"pass.homework":true}},/** uncomment to "$unset" "pass"* {* "$unset": "pass"* }*/])

Result