Database

[{"who":"person1","action":"joined"},{"who":"person2","action":"joined"},{"who":"person1","action":"left"}]

Query

db.collection.aggregate([{$group:{_id:"$who",total:{$sum:1},left:{$sum:{$cond:[{$eq:["$action","left"]},1,0]}},joined:{$sum:{$cond:[{$eq:["$action","joined"]},1,0]}}}}])

Result