Database

[{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([{$addFields:{matchingSkills:{$filter:{input:"$skills",cond:{$or:[{$and:[{$gt:["$$this.yearsExperience",3]},{$eq:["$$this.skill","SQL"]}]},{$and:[{$gt:["$$this.yearsExperience",2]},{$eq:["$$this.skill","Git"]}]}]}}},requiredSkills:["SQL","Git"]}},{$addFields:{"matchingSkillsNames":{$map:{input:"$matchingSkills",as:"matchingSkill",in:"$$matchingSkill.skill"}}}},{$addFields:{"missingSkills":{$filter:{input:"$requiredSkills",cond:{$not:{$in:["$$this","$matchingSkillsNames"]}}}}}}])

Result