Сортировать по нескольким атрибутам с помощью Salat для MongoDB

Я пытаюсь выполнить запрос на MongoDB с Salat. Запрос должен сортировать набор результатов по двум атрибутам. Я не нашел никаких примеров. Сортировка с одним MongoDBObject работает как положено.

val results = dao
  .find(MongoDBObject.empty)
  .sort(orderBy = MongoDBObject("attribute1" -> 1))
  .skip(0)
  .limit(10).toList

Как объединить два объекта MongoDBObject, чтобы он оценивался orderBy? Например, если мой приоритет - одна сортировка по атрибуту 1, по возрастанию и моя вторичная сортировка по атрибуту 2, по возрастанию.

Спасибо за вашу помощь!

2 ответа

Вы можете построить свой объект сортировки следующим образом:

val sort = MongoDBObject("attribute1" -> 1) ++ ("attribute2" -> -1)

И сделайте запрос:

val results = dao
  .find(MongoDBObject.empty)
  .sort(orderBy = sort)
  .skip(0)
  .limit(10).toList

Вы можете внести следующие изменения:

val results = dao
  .find(MongoDBObject.empty)
  .sort(orderBy = MongoDBObject("attribute1" -> 1, "attribute2" -> -1))
  .skip(0)
  .limit(10).toList

Теперь вы будете сортировать с приоритетом для attribute1 в порядке возрастания, а для связей он перейдет к attribute2 в порядке убывания. Это позволяет вам делать все в одной строке вместо создания промежуточного значения, которое потребуется в ответе на конкатенацию списка.

Другие вопросы по тегам