[英]findAll() - there is limit for amount of data fetched from mongo?
我没有那么大的集合,我们只想获取所有文档。 我们正在使用 findAll() 它适用于收集 33.5k(45MB) 文档,但收集 130k (50MB) 时出现错误。
我知道我可以通过例如分块(跳过/限制)获得所有元素,但我很好奇:
findAll() 的这个限制是在 spring-data 中,还是只是 mongo?
这个限制有多大? 它是基于数据 MB 还是文档数?
我可以以某种方式更改此限制吗?
我们正在使用 spring-data-mongo 2.2.5.RELEASE 和 mongo 3.6.17
查看 MongoDB 文档和我对 Mongo 大学的总结,mongo shell 和 mongo compass 都没有 findAll 方法,如果你想遍历它们,你必须使用“it”运算符。
所以我假设限制来自您负责获取数据的 mongo 连接器。
我有两个报价给你:
第一个: Stream
// 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);
}
第二:可分页
// 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);
}
只需使用toArray()
列出所有文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.