Database

db={"ranks":[{"_id":"1","url":"ex1.com","keyword":"k1","rank":19,"createdAt":"2021-06-02","user":"1"},{"_id":"2","url":"ex1.com","keyword":"k1","rank":14,"createdAt":"2021-06-01","user":"1"},{"_id":"3","url":"ex1.com","keyword":"k2","rank":8,"createdAt":"2021-05-01","user":"1"},{"_id":"4","url":"ex2.com","keyword":"k3","rank":4,"createdAt":"2021-05-01","user":"1"},{"_id":"5","url":"ex2.com","keyword":"k3","rank":4,"createdAt":"2021-05-01","user":"2"},{"_id":"6","url":"ex2.com","keyword":"k3","rank":4,"createdAt":"2021-05-01","user":"2"}],"users":[{"_id":"1",email:"aaa"},{"_id":"2",email:"bbbb"}]}

Query

db.ranks.aggregate([{"$sort":{"createdAt":1}},{"$group":{"_id":["$url","$user","$keyword"],"keywords":{$first:"$$ROOT"}}},{"$project":{"url":"$keywords.url","user":"$keywords.user","keywords":"$keywords","_id":0}},{"$group":{"_id":["$user","$url"],"data":{$push:"$$ROOT"}}},{"$project":{"url":{$first:"$data.keywords.url"},"user":{$first:"$data.keywords.user"},"keywords":"$data.keywords","_id":0}},{"$group":{"_id":"$user","data":{$push:"$$ROOT"}}},{$lookup:{from:"users",localField:"_id",foreignField:"_id",as:"user"}},{"$unwind":"$user"},{"$project":{"_id":0,"data.user":0,"data.keywords._id":0,"data.keywords.url":0,"data.keywords.user":0}},])

Result