Database
[{userId:"u1",data:{score1:1,score2:2,score3:3},day:1},{userId:"u1",data:{score1:1,score2:0,score3:0},day:2},{userId:"u1",data:{score1:5,score2:3,score3:2},day:3},{userId:"u2",data:{score1:2,score2:5,score3:1},day:1},{userId:"u2",data:{score1:1,score2:1,score3:6},day:2},{userId:"u2",data:{score1:3,score2:5,score3:3},day:3},{userId:"u3",data:{score1:4,score2:1,score3:1},day:1},{userId:"u3",data:{score1:0,score2:1,score3:1},day:2},{userId:"u3",data:{score1:0,score2:1,score3:10},day:3}]
Query
db.collection.aggregate([{$addFields:{data:{$objectToArray:"$data"}}},{$unwind:"$data"},{$group:{_id:{userId:"$userId",scoreName:"$data.k"},score:{$sum:"$data.v"}}},{$group:{_id:"$_id.scoreName",data:{$push:{k:"$_id.userId",v:"$score"}}}},{$group:{_id:null,scores:{$push:{k:"$_id",v:{$arrayToObject:"$data"}}}}},{$replaceRoot:{newRoot:{$arrayToObject:"$scores"}}}])