Spring Data MongoDB 分页不起作用
SpringData MongoDB pagination not working
我在这里是因为我不知道如何处理这个。
我需要将查询结果分页到 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());
}
}
当我运行测试时,系统out的输出总是5000(集合中文档的总数)。
似乎参数 "size" 和 "limit" 被忽略了。
我也尝试使用 Class PageRequest,但在那种情况下,分页总是在第一次迭代中工作,正确检索 400 个文档,但在第一次迭代后,总是有 0 个文档 returns.
这是带有 PageRequest 的代码:
for (Integer i = 0; i < total; i += 400) {
vehicleCaches = cacheRepository.findAll(arguments.get("collection"), PageRequest.of(i, 400));
}
我也用
尝试了上面相同的代码
New PageRequest(i,400);
我用
- spring数据mongodb2.0.8.RELEASE
- spring5.0.7.RELEASE
- java 10.0.1
使用此解决方案使用分页解决
Page<JSONObject> vehicleCachesPaging;
vehicleCachesPaging = cacheRepository.findAll("COLLECTION", PageRequest.of(j, 400, Sort.unsorted()));
j 是 for 循环索引。
j= 1,2,3,4,5......结束
我在这里是因为我不知道如何处理这个。
我需要将查询结果分页到 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());
}
}
当我运行测试时,系统out的输出总是5000(集合中文档的总数)。 似乎参数 "size" 和 "limit" 被忽略了。
我也尝试使用 Class PageRequest,但在那种情况下,分页总是在第一次迭代中工作,正确检索 400 个文档,但在第一次迭代后,总是有 0 个文档 returns.
这是带有 PageRequest 的代码:
for (Integer i = 0; i < total; i += 400) {
vehicleCaches = cacheRepository.findAll(arguments.get("collection"), PageRequest.of(i, 400));
}
我也用
尝试了上面相同的代码New PageRequest(i,400);
我用
- spring数据mongodb2.0.8.RELEASE
- spring5.0.7.RELEASE
- java 10.0.1
使用此解决方案使用分页解决
Page<JSONObject> vehicleCachesPaging;
vehicleCachesPaging = cacheRepository.findAll("COLLECTION", PageRequest.of(j, 400, Sort.unsorted()));
j 是 for 循环索引。
j= 1,2,3,4,5......结束