Database
db={"queries":[{"_id":1,"query":{"type":1,"subtype":1}},{"_id":2,"query":{"type":2,"subtype":1}}],"entries":[{"_id":1,"type":1,"subtype":1,"title":"1.1"},{"_id":2,"type":2,"subtype":1,"title":"2.1"},{"_id":3,"type":2,"subtype":2,"title":"2.2"}]}
Query
db.queries.aggregate([{"$lookup":{"from":"entries","as":"entries","let":{"query":"$query"},"pipeline":[{"$set":{match:{"$switch":{"branches":[{"case":{$and:[{"$ne":["$$query.type",null]},{"$ne":["$$query.subtype",null]},{"$eq":["$$query.type","$type"]},{"$eq":["$$query.subtype","$subtype"]}]},"then":true}],"default":false}}}},{"$match":{match:true}}]}}])