Database
[{"_id":"123",testId:"test","attr":[{"nameLable":"First Name","userEnteredValue":["Amanda"],"rowNumber":"1"},{"nameLable":"Last Name","userEnteredValue":["Peter"],"rowNumber":"1"},{"nameLable":"First Name","userEnteredValue":["Sandra"],"rowNumber":"2"},{"nameLable":"Last Name","userEnteredValue":["Peter"],"rowNumber":"2"}]}]
Query
db.collection.aggregate([{"$match":{"testId":"test","$and":[{"attr":{"$elemMatch":{"nameLable":"First Name","userEnteredValue":{"$regex":"Amanda","$options":"i"}}}},{"attr":{"$elemMatch":{"nameLable":"Last Name","userEnteredValue":{"$regex":"Peter","$options":"i"}}}}]}},{$addFields:{goodRows:{"$setIntersection":[{$map:{input:{$filter:{input:"$attr",cond:{$and:[{$eq:["$$this.nameLable","First Name"]},{"$regexMatch":{"input":{"$arrayElemAt":["$$this.userEnteredValue",0]},"regex":"Amanda","options":"i"}}]}}},in:"$$this.rowNumber"}},{$map:{input:{$filter:{input:"$attr",cond:{$and:[{$eq:["$$this.nameLable","Last Name"]},{"$regexMatch":{"input":{"$arrayElemAt":["$$this.userEnteredValue",0]},"regex":"Peter","options":"i"}}]}}},in:"$$this.rowNumber"}}]}}},{$match:{$expr:{$gt:[{$size:"$goodRows"},0]}}},{$addFields:{attr:{$filter:{input:"$attr",cond:{$in:["$$this.rowNumber","$goodRows"]}}}}}])