Database

[{"flightNum":"DL1002","status":"On time","date":20191001},{"flightNum":"DL1002","status":"Delayed","date":20191002},{"flightNum":"DL1003","status":"On time","date":20191003},{"flightNum":"DL1003","status":"Cancelled","date":20191004},{"flightNum":"DL952","status":"On time","date":20191003},{"flightNum":"DL952","status":"On time","date":20191004}]

Query

db.collection.aggregate([{$group:{_id:{flightNum:"$flightNum",status:"$status"},count:{$sum:1}}},{$group:{_id:"$_id.flightNum",status:{$push:{k:"$_id.status",v:"$count"}}}},{$addFields:{status:{$arrayToObject:"$status"}}},{$addFields:{"status.flightNum":"$_id"}},{$replaceRoot:{newRoot:"$status"}}])

Result