java - findAll() - 从 mongo 获取的数据量有限制吗?
问题描述
我没有那么大的集合,我们只想获取所有文档。我们正在使用 findAll() 它适用于收集 33.5k(45MB) 文档,但收集 130k (50MB) 时出现错误。
我知道我可以通过例如分块(跳过/限制)获得所有元素,但我很好奇:
findAll() 的这个限制是在 spring-data 中,还是只是 mongo?
这个限制有多大?它是基于数据 MB 还是文档数?
我可以以某种方式更改此限制吗?
我们正在使用 spring-data-mongo 2.2.5.RELEASE 和 mongo 3.6.17
解决方案
我有两个报价给你:
第一个:流
// 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);
}
推荐阅读
- javascript - Discord.js,API 调用失败
- javascript - Javascript 回调调用了两次
- python - 避免绘制 ODE 不同的解 ODEint
- animation - Motion(苹果FCP动画软件)改变项目帧大小分辨率高宽?
- c++ - 防止C++中的无限递归
- r - 如何通过 geom_tile() 和 facet_wrap() 使用自定义的 x 和 y 标签
- sql - 在一个 SQL 查询中合并两个 COUNT
- python - python POST上传大文件而不将其加载到内存
- reactjs - 在 React 应用程序中为 Sass 使用自定义文件
- jquery - 如何使用 Webpack 安装 jQuery