使用MongoRepository进行排序的Spring Mongo分页

时间:2018-06-06 07:04:21

标签: mongodb sorting pagination spring-mongo mongorepository

文档结构 - 消息{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;
}

1 个答案:

答案 0 :(得分:1)

我认为这就是您想要的:

存储库:

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

服务

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

您只需将postId传递到存储库中定义的方法