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