Database

[{name:"mark",skills:[{skill:"React",yearsExperience:3},{skill:"HTML",yearsExperience:5},{skill:"JavaScript",yearsExperience:5},{skill:"Git",yearsExperience:3},{skill:"TypeScript",yearsExperience:1},{skill:"C++",yearsExperience:1}]}]

Query

db.collection.aggregate([{"$match":{name:"mark"}},{$addFields:{matchingSkills:{$filter:{input:"$skills",cond:{$or:[{$and:[{$gt:["$$this.yearsExperience",3]},{$eq:["$$this.skill","HTML"]}]},{$and:[{$gt:["$$this.yearsExperience",3]},{$eq:["$$this.skill","Git"]}]}]}}}}},{$addFields:{matchingSkills:"$$REMOVE",percentageMatch:{$multiply:[{$divide:[{$size:"$matchingSkills"},2]},100]}}}])

Result