Database

[{"name":"foo","category":0,publishedAt:ISODate("2008-09-14T00:00:00Z")},{"name":"bar","category":1,publishedAt:ISODate("1945-08-17T00:00:00Z")},{"name":"baz","category":1,publishedAt:ISODate("2002-03-01T00:00:00Z")},{"name":"qux","category":2,publishedAt:ISODate("2002-01-21T00:00:00Z")},{"name":"quux","category":4,publishedAt:ISODate("2018-04-18T00:00:00Z")},]

Query

db.collection.aggregate([{$match:{publishedAt:{$gte:ISODate("2000-01-01T00:00:00Z"),$lt:ISODate("2011-01-01T00:00:00Z")}}},{$group:{_id:{year:{$year:"$publishedAt"},category:"$category"},totalCount:{$count:{}}}},{$group:{"_id":"$_id.year","totalCount":{"$sum":"$totalCount"},"categoryCount":{"$push":{"k":{"$toString":"$_id.category"},"v":"$totalCount"}}}},{"$addFields":{"categoryCount":{"$arrayToObject":"$categoryCount"}}},{"$addFields":{"categoryCount":{"$mergeObjects":[{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"$categoryCount"]}}},{"$addFields":{"categoryCount":{"$objectToArray":"$categoryCount"}}},{"$addFields":{"categoryCount":{"$map":{"input":"$categoryCount","as":"x","in":{"$mergeObjects":["$$x",{"k":{"$toInt":"$$x.k"}}]}}}}},{"$addFields":{"categoryCount":{"$sortArray":{"input":"$categoryCount","sortBy":{"$k":1}}}}},{"$addFields":{"categoryCount":"$categoryCount.v"}},{$sort:{_id:1}}])

Result