Java Spring Mongo сортировка игнорировать вопрос случая



Я использую Spring-Data-mongodb, выполняя все виды запросов к MongoDB.



При попытке выполнить paging & sort с ignore case я получаю исключение,



Вот мой код:



Sort.Order order = new Sort.Order(ascending? Sort.Direction.ASC: Sort.Direction.DESC, sortKey).ignoreCase();
Query query = new Query(filter).with(new PageRequest(page, size, new Sort(order)));
return mongoTemplate.find(query, clazz,collection);


Обратите внимание .Метод IgnoreCase() применяется к сортировке.объект order.



Запрос .метод with терпит неудачу и выдает исключение:




Java.яз..IllegalArgumentException: Данный сорт содержал порядок для фамилии с игнорируемым регистром! MongoDB не поддерживает сортировку игнорирование дела в настоящее время!
в орг.весенняя рамка.данные.монгодб.ядро.запрос.Запрос.с запросами.java: 179)
в орг.весенняя рамка.данные.монгодб.ядро.запрос.Запрос.с запросами.java: 162)




Если удалить .Метод IgnoreCase (), то есть выполнение следующего кода:



Sort.Order order = new Sort.Order(ascending? Sort.Direction.ASC: Sort.Direction.DESC, sortKey);
Query query = new Query(filter).with(new PageRequest(page, size, new Sort(order)));
return mongoTemplate.find(query, clazz,collection);


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



Следовательно, я мог бы получить A B C a1 a2, вместо A a1 a2 B C.



Хотя в исключении упоминается, что mongoDB не поддерживает сортировку IgnoreCase, я использую mongo 3.4, который в моем понимании поддерживает опцию ignoreCase для сортировки по страницам (вот официальная проблема JIRA относительно нечувствительной функции поиска, добавленной), и мой пакет spring-data-mongodb равен 1.8.

686   1  

1 ответ:

Извините, если мои комментарии не были понятны. Вы должны отправить параметры сортировки с помощью запроса сортировки.

Сила первичная и вторичная оба обеспечат нечувствительный к регистру вид. Убедитесь,что вы используете точные критерии сортировки в запросе сортировки, чтобы воспользоваться преимуществами индекса.

Sort.Order order = new Sort.Order(ascending? Sort.Direction.ASC: Sort.Direction.DESC, sortKey);
Query query = new Query(filter).with(new PageRequest(page, size, new Sort(order)));
query.collation(Collation.of("en").strength(Collation.ComparisonLevel.secondary()));
return mongoTemplate.find(query, clazz,collection);

Comments

    Ничего не найдено.