Database

[{_id:1,field1:"test",field2:"value2",fields:["field1","field2"]},{_id:2,field1:"value1",field2:"test",fields:["field1","field2"]},{_id:3,field1:"test",field2:"value2",fields:["field2"]},{_id:4,field1:"value1",field2:"value2",fields:["field1"]},{_id:5,field1:"test",field2:"test",fields:[]}]

Query

db.collection.aggregate([{$addFields:{keyValuePairArray:{$filter:{input:{$objectToArray:"$$ROOT"},cond:{$not:{$in:["$$this.k",["_id","fields"]]}}}}}},{$match:{$expr:{$anyElementTrue:{$map:{input:"$keyValuePairArray",in:{$and:[{$in:["$$this.k","$fields"]},{$eq:["$$this.v","test"]}]}}}}}},{$unset:"keyValuePairArray"}])

Result