Database
[{"OrderId":"ID","StatusLog":[{"Timestamp":"Some ISO Date","Status":1,"Reason":"Because","User":"User1"},{"Timestamp":"Some ISO Date","Status":2,"Reason":"No Idea","User":"User2"},{"Timestamp":"Some ISO Date","Status":3,"Reason":"Because","User":"User2"},{"Timestamp":"Some ISO Date","Status":2,"Reason":"Some Idea","User":"User1"}]}]
Query
db.collection.aggregate([{$unwind:"$StatusLog"},{$match:{"StatusLog.Status":{$in:[2,3]}}},{$group:{_id:"$StatusLog.User",Status:{$push:"$StatusLog.Status"},Reason:{$first:"$StatusLog.Reason"},orderCount:{$sum:{$cond:[{$eq:["$StatusLog.Status",2]},1,0]}}}},{$match:{Status:{$all:[2,3]}}}])