SpringData MongoDB分页不起作用

时间:2018-07-23 21:36:33

标签: java spring mongodb pagination spring-data-mongodb

我在这里,因为我不知道如何处理。

我需要将查询结果分页到mongodb中的集合。

这是我在存储库中的自定义查询:

@Query("{'data.consumer': ?0}.skip(?1).limit(?2)")
List<JSONObject> findAll(String consumer, int size, int page);

这里是我的测试方法:

@Test
public void testPaginationResult() {
    List<JSONObject> vehicleCaches;
    for (Integer i = 0; i < 5000; i += 400) {
        vehicleCaches = cacheRepository.findAll("collectionName", i, 400);
        System.out.println(vehicleCaches.size());
    }
}

当我运行测试时,系统的输出始终为5000(集合中文档的总数)。 似乎参数“ size”和“ limit”被忽略了。

我也尝试使用Class PageRequest,但是在那种情况下,分页在第一次迭代中总是有效,正确地检索了400个文档,但是在第一次迭代之后,总是返回0个文档。

这是PageRequest的代码:

 for (Integer i = 0; i < total; i += 400) {
vehicleCaches = cacheRepository.findAll(arguments.get("collection"), PageRequest.of(i, 400));

}

我也用

尝试了与上面相同的代码
New PageRequest(i,400);

我使用

  • spring数据mongodb 2.0.8.RELEASE
  • 春天5.0.7。发布
  • java 10.0.1

1 个答案:

答案 0 :(得分:0)

在此解决方案中使用分页已解决

Page<JSONObject> vehicleCachesPaging;
vehicleCachesPaging = cacheRepository.findAll("COLLECTION", PageRequest.of(j, 400, Sort.unsorted()));

j是for循环索引。

j = 1,2,3,4,5 ......结束