Database

[{_id:1,field:{subfield1:{subsubfield1:["value","test"]},subfield2:{subsubfield2:["value"]}},paths:["field.subfield1.subsubfield1","field.subfield2.subsubfield2"]},{_id:2,field:{subfield1:{subsubfield1:["value"]},subfield2:{subsubfield2:["value","test"]}},paths:["field.subfield2.subsubfield2"]},{_id:3,field:{subfield1:{subsubfield1:["value"]},subfield2:{subsufield2:["value"]}},paths:["field.subfield1.subsubfield1"]},{_id:4,field:{subfield1:{subsubfield1:["value"]},subfield2:{subsufield2:["value"]}},paths:["field.subfield1.subsubfield1","field.subfield2.subsubfield2"]},{_id:5,/** shouldReturn: true,*/field:{subfield1:{subsubfield1:["value","test"]}},paths:["field.subfield1.subsubfield1"]},{_id:6,/** shouldReturn: false,*/field:{subfield1:{subsubfield1:["value"]}},paths:["field.subfield1.subsubfield1"]}]

Query

db.collection.aggregate([{"$set":{"parsed":{"$map":{"input":{"$objectToArray":"$field"},"as":"kv","in":{k:{"$concat":["field",".","$$kv.k"]},v:"$$kv.v"}}}}},{"$set":{"parsed":{"$reduce":{"input":"$parsed","initialValue":[],"in":{"$concatArrays":["$$value",{"$map":{"input":{"$objectToArray":"$$this.v"},"as":"kv","in":{k:{"$concat":["$$this.k",".","$$kv.k"]},v:"$$kv.v"}}}]}}}}},{"$match":{"$expr":{"$anyElementTrue":{"$map":{"input":"$parsed","as":"p","in":{/**1. matching*/"$and":[/** 1.1 matching path*/{"$in":["$$p.k","$paths"]},/** 1.2 matching value "test"*/{"$in":["test","$$p.v"]}]}}}}}}])

Result