Database
[{"_id":1,"department":"Finance","user":{"name":"Staff 1","gender":"Male",}},{"_id":2,"department":"Finance","user":{"name":"Staff 2","gender":"Female",}},{"_id":3,"department":"Finance","user":{"name":"Staff 3","gender":"Male",}}]
Query
db.collection.aggregate([{$setWindowFields:{partitionBy:{department:"$department",gender:"$user.gender"},output:{count:{$count:{}}}}},{$group:{_id:"$department",data:{$addToSet:{k:"$user.gender",v:"$count"}},count:{$count:{}}}},{$project:{_id:1,count:1,data:{$arrayToObject:"$data"}}}])