我在这里,因为我不知道如何处理。
我需要将查询结果分页到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);
我使用
答案 0 :(得分:0)
在此解决方案中使用分页已解决
Page<JSONObject> vehicleCachesPaging;
vehicleCachesPaging = cacheRepository.findAll("COLLECTION", PageRequest.of(j, 400, Sort.unsorted()));
j是for循环索引。
j = 1,2,3,4,5 ......结束