Я пытаюсь реализовать таблицу лидеров, которая действует как очередь вместо табло, т.е.
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
Как можно изменить вышеупомянутый запрос для реализации соответствующей логики c? Спасибо