Database

db={post:[{"_id":"uid1","userID":"user1","likeNum":29},{"_id":"uid2","userID":"user1","likeNum":2},{"_id":"uid3","userID":"user1","likeNum":13},{"_id":"uid4","userID":"user2","likeNum":21},{"_id":"uid5","userID":"user2","likeNum":19},{"_id":"uid6","userID":"user3","likeNum":1},{"_id":"uid7","userID":"user3","likeNum":8},{"_id":"uid8","userID":"user3","likeNum":14},{"_id":"uid9","userID":"user3","likeNum":4},{"_id":"uid10","userID":"user4","likeNum":20},{"_id":"uid11","userID":"user4","likeNum":9},{"_id":"uid12","userID":"user4","likeNum":11}]}

Query

db.post.aggregate([{"$match":{"userID":{"$nin":["user3"]},"_id":{"$nin":["uid9"]}}},{$sort:{likeNum:-1}},{"$group":{"_id":"$userID","posts":{$firstN:{input:"$$ROOT",n:2}}}},{$unwind:"$posts"},{$replaceWith:"$posts"},{$sort:{likeNum:-1}},{"$limit":10}])

Result