繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM