Java findAll()-从mongo获取的数据量有限制吗?

Java findAll()-从mongo获取的数据量有限制吗?,java,mongodb,spring-data-mongodb,Java,Mongodb,Spring Data Mongodb,我没有那么多的藏品,我们只想把所有的文件都拿来。我们使用的是findAll(),它适用于33.5k(45MB)文档的收集,但是130k(50MB)的收集会出现错误 我知道我可以通过例如分块(跳过/限制)获得所有元素,但我很好奇: findAll()的这一限制存在于spring数据中,或者只是mongo? 这个限额有多大?它基于数据MB或文档计数? 我能改变这个限制吗 我们使用的是spring数据mongo 2.2.5.RELEASE和mongo 3.6.17查看MongoDB文档和我对mongo

我没有那么多的藏品,我们只想把所有的文件都拿来。我们使用的是findAll(),它适用于33.5k(45MB)文档的收集,但是130k(50MB)的收集会出现错误

我知道我可以通过例如分块(跳过/限制)获得所有元素,但我很好奇:

findAll()的这一限制存在于spring数据中,或者只是mongo?
这个限额有多大?它基于数据MB或文档计数?
我能改变这个限制吗


我们使用的是spring数据mongo 2.2.5.RELEASE和mongo 3.6.17

查看MongoDB文档和我对mongo大学的总结,mongo shell和mongo compass都没有findAll方法,如果您想迭代它们,必须使用“it”操作符


因此,我假设限制来自负责获取数据的mongo连接器。

我有两个建议:

第一:

// Repository
@Query(value="{name: ?0}",
        fields = "{ _id: 1 }")
Stream<Item> getLatestApprovedIdByName(String name);

// Service
default Item getLatestApprovedIdByName(String name) {
    return getLatestApprovedIdByName(name).stream().findFirst().orElse(null);
}
//存储库
@查询(value=“{name:?0}”,
字段=“{u id:1}”)
流getLatestApprovedByName(字符串名称);
//服务
默认项GetLatestApprovedByName(字符串名称){
返回GetLatestApprovedByName(name).stream().findFirst().orElse(null);
}
第二:可分页

// Repository
@Query(value = "{name: ?0,fields = "{ _id: 1 }")
Page<Item> getLatestApprovedIdByName(String name, Pageable pageable);

// Service
default Item getLatestApprovedIdByName(String name) {
    PageRequest request = new PageRequest(0, 1, new Sort(Sort.Direction.DESC, "approval.approvedDate"));
    return getLatestApprovedIdByName(name, request).getContent().get(0);
}
//存储库
@查询(value=“{name:?0,fields=“{u id:1}”)
页面GetLatestApprovedByName(字符串名称,可分页);
//服务
默认项GetLatestApprovedByName(字符串名称){
PageRequest=新的PageRequest(0,1,新排序(Sort.Direction.DESC,“approval.approvedDate”);
返回GetLatestApprovedByName(名称,请求).getContent().get(0);
}

只需使用
toArray()
列出您的所有文档。

错误是什么?thx,我发现流是一种方式,但我对存在此限制的地方感兴趣。