Database
db={"Post":[{"user":1,},{"user":1,},{"user":2,},{"user":1,},{"user":2,},{"user":3,}],"User":[{"_id":1,"name":"user1"},{"_id":2,"name":"user2"},{"_id":3,"name":"user3"}]}
Query
db.User.aggregate([{"$lookup":{"from":"Post","localField":"_id","foreignField":"user","as":"post"}},{"$set":{"post":{"$size":"$post"}}},{"$sort":{"post":-1}},{"$match":{"name":"user1"}},{"$limit":5}])