Найти документ Mon goose, а затем отсортировать случайным образом по различным уровням? - PullRequest
1 голос
/ 23 января 2020

В настоящее время у меня есть .find (), связанный с документами в коллекции, и в настоящее время он сортирует документы по их «статусу» и сортирует по последним. Можно ли сначала отсортировать их по статусу, а затем случайным образом отсортировать их по соответствующим уровням?

Например, если у меня есть пользователи, которые имеют три уровня: Уровень 1, Уровень 2 и Уровень 3. В настоящее время сортировка выполняется по Уровню 1 (самый последний), затем Уровню 2 (самый последний), затем Уровню 3 (Совсем недавно). Вместо этого я бы хотел отсортировать их следующим образом: уровень 1 (случайный), уровень 2 (случайный), уровень 3 (случайный). Но по-прежнему отображать результаты примерно так: Уровень 1, Уровень 2, затем Уровень 3. Возможно ли это?

router.get('/users', (req, res) => {

    const errors = {};

    Users.find().sort({tierStatus: -1, tierStatus: -1, tierStatus: -1})
        .then(users => {
            if (!users) {
                errors.nousers = 'There are no users';
                return res.status(404).json(errors);
            }
            res.json(users);
        })
        .catch(err => res.status(404).json({
            nousers: 'There are no users'
        }));
});

1 Ответ

0 голосов
/ 23 января 2020

В настоящее время нет способа генерировать случайное значение в MongoDB, поэтому вы не можете сортировать «случайно». Единственный оператор, который вы можете рассмотреть, - это $ sample , который выбирает случайные документы, но вы не можете использовать его вместе с sort() или $sort

. Единственное решение - сортировка по детерминистике c поле, а затем перемешать в логи вашего приложения c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...