Database

[{user:"joe",event:"foo",timestamp:1},{user:"meg",event:"blah",timestamp:2},{user:"rick",event:"bork",timestamp:3},{user:"joe",event:"bing",timestamp:4},{user:"meg",event:"biz",timestamp:5},{user:"tim",event:"boz",timestamp:6}]

Query

db.collection.aggregate([{$setWindowFields:{partitionBy:"$user",sortBy:{timestamp:-1},output:{rank:{$rank:{}}}}},{$match:{rank:1}},{$sort:{timestamp:1}},{$unset:"rank"}])

Result