Java, запрос к mongodb с сортировкой по полю
Монго бд, есть поле "field" типа string, в котором записываются только натуральные числа.
Обращение к бд осуществляется через org.springframework.data.mongodb.core.Query
Query query = new Query();
к нему добавляются некоторые критерии
query.addCriteria(new Criteria().andOperator(someCriteria));
Также есть сортировка org.springframework.data.domain.Sort и пагинация.
Sort sort = Sort.by(field).ascending(); query.with(sort).with(Pageable.ofSize(pageSize).withPage(page));
Сейчас сортировка по полю field происходит как для текста, так как тип string.
Вопрос: как можно сделать так, чтоб сортировка проходила по полю field как для чисел, а не для текста. Возможно при самом запросе к бд можно как-то представить поле field как тип int или что-то подобное. В бд тип поля сменить на integer не получится. Сортировать результирующую выборку компаратором с изменением поля на тип integer не предлагать)
Ответы (1 шт):
если кому интересно, подсказали решение через Collation, сделал так:
Collation collation = Collation.of("en_US").numericOrdering(true);
query.collation(collation);