Database
[{"key":"A","status":"To Do","val":4},{"key":"A","status":"Done","val":1},{"key":"A","status":"To Do","val":3},{"key":"A","status":"Done","val":2},{"key":"B","status":"Done","val":5},{"key":"B","status":"Done","val":6}]
Query
db.collection.aggregate([{$group:{_id:{key:"$key",status:"$status"},val:{$push:"$val"}}},{$group:{_id:"$_id.key",status_val:{$push:{status:"$_id.status",val:"$val"}}}},{$project:{_id:0,key:"$_id",status_val:1}}])