Database

[{country:"USA",Region:"CA",City:"Los Angeles"},{country:"USA",Region:"NY",City:"New York"},{country:"USA",Region:"NY",City:"White Plains"},{country:"France",Region:"Ile-de-France",City:"Paris"},{country:"France",Region:"Bretagne",City:"Brest"},{country:"Germany",Region:"",City:"Berlin"}]

Query

db.collection.aggregate([{$group:{_id:{country:"$country",Region:"$Region"},count:{$sum:1}}},{$group:{_id:"$_id.country",children:{$push:{Region:"$_id.Region",count:"$count"}}}}])

Result