Как создать таблицу лидеров, которая сортирует по счету и времени mongodb? - PullRequest
1 голос
/ 13 января 2020

Я пытаюсь реализовать таблицу лидеров, которая действует как очередь вместо табло, т.е.

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? Спасибо

...