Database
[{"empno":1500,"province":"North"},{"empno":1600,"province":"West"}]
Query
db.collection.aggregate([{"$group":{"_id":{"$switch":{"branches":[{"case":{"$eq":["$province","North"]},"then":{"index":0,"province":"North"}},{"case":{"$eq":["$province","East"]},"then":{"index":1,"province":"East"}},{"case":{"$eq":["$province","South"]},"then":{"index":2,"province":"South"}},{"case":{"$eq":["$province","West"]},"then":{"index":3,"province":"West"}}],"default":{"index":5}}},"count":{"$sum":1}}},{"$group":{"_id":null,"data":{"$push":{"index":"$_id.index","province":"$province","count":"$count"}}}},{"$project":{"_id":0}},{"$set":{"zero-data":[{"index":0,"count":0},{"index":1,"count":0},{"index":2,"count":0},{"index":3,"count":0}]}},{"$set":{"data":{"$reduce":{"input":"$zero-data","initialValue":[],"in":{"$let":{"vars":{"all_data":"$$value","d":"$$this"},"in":{"$let":{"vars":{"found_data":{"$filter":{"input":"$data","cond":{"$eq":["$$d.index","$$d1.index"]},"as":"d1"}}},"in":{"$concatArrays":["$$all_data",[{"$cond":[{"$eq":["$$found_data",[]]},{"index":"$$d.index","count":0},{"$arrayElemAt":["$$found_data",0]}]}]]}}}}}}}}},{"$project":{"data":{"$map":{"input":"$data","in":"$$this.count"}}}}])