Node.js 如何创建按分数和时间排序的排行榜mongodb?
我正在尝试实现一个排行榜,它像一个队列,而不是一个记分板Node.js 如何创建按分数和时间排序的排行榜mongodb?,node.js,mongodb,mongoose,mongodb-query,Node.js,Mongodb,Mongoose,Mongodb Query,我正在尝试实现一个排行榜,它像一个队列,而不是一个记分板 user score time position 1 1 1 1 2 1 2 2 3 0 1 3 4 0 2 4 我的问题是,考虑到时间也被考虑在内,应该如何构造一个查询来获取用户在此队列中的位置,下面描述了一个从集合中获取用户位置的函数: public async position(leaderboardId: string, id:
user score time position
1 1 1 1
2 1 2 2
3 0 1 3
4 0 2 4
我的问题是,考虑到时间也被考虑在内,应该如何构造一个查询来获取用户在此队列中的位置,下面描述了一个从集合中获取用户位置的函数:
public async position(leaderboardId: string, id: any) {
const user = await this.get(leaderboardId, id);
return await this.getCollection(leaderboardId).
find({
score: {
$gt: user.score
}
}).
count() + 1;
}
但是,如果多个用户具有相同的分数,则意味着所有具有该分数(位置)的用户都将平局,即
如何修改上述查询以实现相应的逻辑?
谢谢
user score time position
1 1 1 1
2 1 2 1
3 0 1 3
4 0 2 3