Spring Mongo Paging с сортировкой с помощью MongoRepository

Структура документа — message{obj_id,post_id,message_time,message_text} и @key — obj_id.

Постановка проблемы: я просто хочу, чтобы все данные, содержащие post_id: 'что угодно', сортировались на основе message_time, и мне нужна пользовательская разбивка на страницы в результат каждый раз. Теперь я реализую код, указанный ниже, по ссылке:https://stackoverflow.com/a/10077534/9901300. Но не смог найти, где каждый раз указывать разные post_id для результата поиска.

Пожалуйста, просмотрите приведенный ниже код.

public interface MessageMongoRepository extends 
MongoRepository<Message, String> {

@Query("{ 'post_id' : ?0 }")
Page<Message> findByPostIdSorted(Pageable pageable);
}

Сервис:

@Override
public List<Message> getByPostId(String PostId, int page, int size) {
    List<Message> messages = new ArrayList<>();
    @SuppressWarnings("deprecation")
    PageRequest request = new PageRequest(page, size, new Sort(Sort.Direction.DESC, "message_time"));
    messages = messageRepository.findByPostIdSorted(request).getContent();
    return messages;
}

person Arpan Jain    schedule 06.06.2018    source источник


Ответы (1)


Я думаю, это то, что вы ищете:

Репозиторий:

@Query("{ 'post_id' : ?0 }")
Page<Message> findByPostId(String postId, Pageable pageable);

Сервис

messages = messageRepository.findByPostId(postId, request).getContent();

Вы можете просто передать postId методу, определенному в репозитории.

person Kency Kurian    schedule 27.06.2018
comment
Спасибо, Кенси :) Это именно то, что я искал. - person Arpan Jain; 03.07.2018
comment
@Arpan Jain Добро пожаловать :) - person Kency Kurian; 03.07.2018