Database

[{uid:ObjectId("63920f965d15e98e3d7c450c"),surveyId:"xxxxx",answers:[{answer:"A"},/** question 1 ‘s answer*/{answer:"B"},/** question 2 ‘s answer*/{answer:"C"}/** question 3 ‘s answer*/]},{uid:ObjectId("63920f965d15e98e3d7c451c"),surveyId:"xxxxx",answers:[{answer:"B"},/** question 1 ‘s answer*/{answer:"B"},/** question 2 ‘s answer*/{answer:"B"}/** question 3 ‘s answer*/]},{uid:ObjectId("63920f965d15e98e3d7c452c"),surveyId:"xxxxx",answers:[{answer:"A"},/** question 1 ‘s answer*/{answer:"B"},/** question 2 ‘s answer*/{answer:"A"}/** question 3 ‘s answer*/]}]

Query

db.collection.aggregate([{$unwind:{path:"$answers",includeArrayIndex:"index"}},{$group:{_id:{surveyId:"$surveyId",index:"$index"},A:{$sum:{$cond:[{$eq:["$answers.answer","A"]},1,0]}},B:{$sum:{$cond:[{$eq:["$answers.answer","B"]},1,0]}},C:{$sum:{$cond:[{$eq:["$answers.answer","C"]},1,0]}},all:{$sum:1}}},{$project:{A:{$multiply:[{$divide:["$A","$all"]},100]},B:{$multiply:[{$divide:["$B","$all"]},100]},C:{$multiply:[{$divide:["$C","$all"]},100]},question:{$add:["$_id.index",1]},surveyId:"$_id.surveyId",_id:0}}])

Result