Database
[{data:{key:"A",value:"one"}},{data:{key:"A",value:"one"}},{data:{key:"A",value:"two"}},{data:{key:"A",value:"one"}}]
Query
db.collection.aggregate([{$group:{_id:{key:"$data.key",value:"$data.value"},count:{$sum:1}}},{$group:{_id:"$_id.key",result:{$push:{value:"$$ROOT._id.value",count:"$$ROOT.count"}}}}])