Database
db={box:[{"content":"0","warehouseId":"w0"},{"content":"0","warehouseId":"w0"},{"content":"1","warehouseId":"w0"},{"content":"1","warehouseId":"w0"},{"content":"2","warehouseId":"w0"},{"content":"0","warehouseId":"w1"}],items:[{"id":"0","name":"Item 0"},{"id":"1","name":"Item 1"},{"id":"2","name":"Item 2"}]}
Query
db.box.aggregate([{$group:{_id:{warehouseId:"$warehouseId",content:"$content"},count:{$sum:1}}},{$group:{_id:"$_id.warehouseId",boxes:{$push:{k:"$_id.content",v:"$count"}}}},{$replaceRoot:{newRoot:{$mergeObjects:[{Warehouse:"$_id"},{$arrayToObject:"$boxes"}]}}},{$sort:{Warehouse:1}}])