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);

我用

使用此解决方案使用分页解决

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

j 是 for 循环索引。

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