MongoDB — 2 Уровня сортировки

#mongodb #mongodb-query

#mongodb #mongodb-запрос

Вопрос:

У меня есть запрос агрегации, который я хотел бы отсортировать по 2 уровням.

У меня есть коллекция пользователей, в которой есть следующие поля, относящиеся к сортировке: premium (boolan) last_online (дата)

Я хотел бы отсортировать их сначала по premium, затем по last_online.

Я представляю это как первую сортировку, разбивающую результат на 2 группы: премиум и не премиум. Затем каждая группа сортируется внутри себя по last_online .

Поэтому результатом должно быть — премиум, отсортированное по last_online, за которым следует не премиум, отсортированное по last_online.

Я пытался { $sort: { premium: -1, last_online: -1 } } , но на самом деле это не дает мне результата, который я ищу.

Как я могу этого добиться?

Ответ №1:

Вы могли бы рассмотреть возможность добавления индекса для получения согласованного результата сортировки.

 db.collection.createIndex({premium : -1, last_online : -1})