Database

db={poll:[{"_id":{"$oid":"636027704f7a15587ef74f26"},"question":"question 1","ended":false,"options":[{"id":"1","option":"option 1"},{"id":"2","option":"option 2"},{"id":"3","option":"option 3"}]}],vote:[{"_id":{"$oid":"635ed3210acbf9fd14af8fd1"},"poll_id":"636027704f7a15587ef74f26","poll_option_id":"1","user_id":"1"},{"_id":{"$oid":"635ed3210acbf9fd14af8fd2"},"poll_id":"636027704f7a15587ef74f26","poll_option_id":"1","user_id":"2"},{"_id":{"$oid":"635ed3210acbf9fd14af8fd3"},"poll_id":"636027704f7a15587ef74f26","poll_option_id":"2","user_id":"3"}]}

Query

db.vote.aggregate([{$group:{_id:{poll_id:{$toObjectId:"$poll_id"},poll_option_id:"$poll_option_id"},count:{$sum:1}}},{$group:{_id:"$_id.poll_id",counts:{$push:{count:"$count",option:{$concat:["option ","$_id.poll_option_id"]}}},countAll:{$sum:"$count"}}},{$lookup:{from:"poll",localField:"_id",foreignField:"_id",as:"poll"}},{$project:{poll:{$first:"$poll"},counts:1,countAll:1}},{$project:{optionsGrouped:{$map:{input:"$poll.options",in:{$mergeObjects:["$$this",{$cond:[{$gte:[{$indexOfArray:["$counts.option","$$this.option"]},0]},{$arrayElemAt:["$counts",{$indexOfArray:["$counts.option","$$this.option"]}]},{count:0}]}]}}},count:"$countAll",question:"$poll.question"}}])

Result