Database

[{"gameId":"G1","userId":"U22","score":420},{"gameId":"G2","userId":"U22","score":10},{"gameId":"G1","userId":"U22","score":80},{"gameId":"G1","userId":"U25","score":400}]

Query

db.collection.aggregate([{$group:{_id:{game:"$gameId",user:"$userId"},score:{$sum:"$score"}}},{$group:{_id:"$_id.user",played:{$push:{game:"$_id.game",score:"$score"}},score:{$max:"$score"}}},{$sort:{score:-1}},{$limit:100}])

Result