Database

[{"name":"a name","project":[{companyName:"a name",contactPerson:[{work_email:"test@test.com"}]},{companyName:"a name1",contactPerson:[{work_email:"test1@test.com"}]},{companyName:"a name2",contactPerson:[{work_email:"test2@test.com"}]},{companyName:"a name3",contactPerson:[{work_email:"test@test.com"}]},]}]

Query

db.collection.aggregate([{"$unwind":"$project"},{$addFields:{"project.contactPerson":{$filter:{input:"$project.contactPerson",cond:{$eq:["$$this.work_email","test@test.com"]}}}}},{$match:{$expr:{$ne:["$project.contactPerson",[]]}}},{$group:{_id:"$_id",name:{$first:"$name"},project:{"$addToSet":"$project"}}}])

Result