Database

[{"_id":"1","Person":"Person A","type":"Type A","source":"Source A","subject":"some subject"},{"_id":"2","Person":"Person B","type":"Type B","source":"Source C","subject":"some subject"},{"_id":"3","Person":"Person C","type":"Type A","source":"Source A","subject":"some subject"},{"_id":"4","Person":"Person C","type":"Type C","source":"Source B","subject":"some subject"},{"_id":"5","Person":"Person A","type":"Type B","source":"Source A","subject":"some subject"},{"_id":"6","Person":"Person B","type":"Type C","source":"Source A","subject":"some subject"}]

Query

db.collection.aggregate([{"$addFields":{/** put your query param here*/"paramPerson":"All","paramType":"Type A","paramSource":"Source A"}},{$match:{$expr:{$and:[{$or:[{$eq:["$paramPerson","All"]},{$eq:["$paramPerson","$Person"]}]},{$or:[{$eq:["$paramType","All"]},{$eq:["$paramType","$type"]}]},{$or:[{$eq:["$paramSource","All"]},{$eq:["$paramSource","$source"]}]}]}}},{"$project":{"paramPerson":false,"paramSource":false,"paramType":false}}])

Result