Database
[{_id:"usr-1",userMDs:{md8:0.5,md9:1,md13:-0.5,md14:0.5,md15:1,md19:-0.5,md20:-1,md21:1,md25:-0.5,md26:1},matchMDs:{md1:0.5,md2:0.5,md3:1,md7:-0.5,md15:1,md19:-0.4,md20:-1,md21:1,md25:-0.5,}},{_id:"usr-2",userMDs:{md1:0.6,md2:0.5,md3:1,md7:-0.5,md13:-0.5,md14:0.5,md15:1.1,md19:-0.5,md20:-1,md21:1,md25:-0.5,md26:1},matchMDs:{md1:0.2,md2:0.5,md3:1,md7:-0.5,md15:1,md20:-1,md21:1,md25:-0.5,md26:1}}]
Query
db.collection.aggregate([{$addFields:{commonKeys:{$filter:{input:{$objectToArray:"$userMDs"},as:"userMD",cond:{$in:["$$userMD.k",{$map:{input:{$objectToArray:"$matchMDs"},as:"matchMD",in:"$$matchMD.k"}}]}}}}},{$addFields:{subtracted:{$arrayToObject:{$map:{input:"$commonKeys",as:"common",in:{k:"$$common.k",v:{$round:[{$subtract:["$$common.v",{$ifNull:[{$arrayElemAt:[{$map:{input:{$filter:{input:{$objectToArray:"$matchMDs"},as:"item",cond:{$eq:["$$item.k","$$common.k"]}}},as:"item",in:"$$item.v"}},0]},0]}]},1]}}}}}}},{$project:{difference:"$subtracted"}}])