Database
[{"category":"Category one","name":"Sample name","subCategory":"subCategory one",},{"category":"Category one","name":"Sample name","subCategory":"subCategory two",},{"category":"Category two","name":"Sample name","subCategory":"subCategory one",},{"category":"Category one","name":"Sample name","subCategory":"subCategory two",}]
Query
db.collection.aggregate([{"$group":{"_id":{cat:"$category",sub:"$subCategory"},"count":{"$sum":1},"subCategory":{$push:"$$ROOT"}}},{"$group":{"_id":"$_id.cat","counts":{"$push":{"k":"$_id.sub","v":"$count"},},"count":{$sum:"$counts"}}},{"$project":{"counts":{"$arrayToObject":"$counts"},}},])