mongodb - Morphia 在性能方面 fetch 和 asList 之间有区别吗

标签 mongodb morphia mongodb-query mongo-java

我们正在使用 morphia 0.99 和 java 驱动程序 2.7.3 我想了解使用 fetch 逐条获取记录和通过 asList 检索结果之间有什么区别(假设有足够的内存通过 asList 检索记录)。

我们遍历一个大的集合,在使用fetch的时候,在fetch操作的过程中,有时会在服务器上遇到cursor not found异常,所以我需要执行另一个命令来继续,这可能是什么原因?

1-)fetch the record 
2-)do some calculation on it 
3-)+save it back to database again 
4-)fetch another record and repeat the steps until there isn't any more records. 

那么哪个会更快?使用 asList 一条一条地获取记录或检索大量结果,或者使用 morphia 实现它们之间没有任何区别吗?

感谢您的回答

最佳答案

据我所知,fetch() 从数据库中流式传输结果,而 asList() 会将所有查询结果加载到内存中。因此它们都将获得与查询匹配的每个对象,但是 asList() 会将它们全部加载到内存中,而 fetch() 则由您自行决定。

对于您的用例,它在 CPU 方面都不会更快,但 fetch() 应该使用更少的内存,并且在您有大量数据库记录的情况下不会崩溃。

关于mongodb - Morphia 在性能方面 fetch 和 asList 之间有区别吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14062251/

相关文章:

mysql - NoSQL 投票系统

java - Morphia 泛型 - 不可能吗?

python - 如何在 python 中为包含嵌套文档列表的文档创建 mongoDB 聚合查询?

java - 监听某些变化并将其更新到数据库

java - Morphia 多字段排序不适用于类似电话簿的排序

node.js - 从属于一个文档的对象数组中获取一个元素( Mongoose )

mongodb - 如何使用聚合计算运行总数?

java - 如何在执行 mongotemplate.save 操作期间获取 mongodb 集合中文档的对象 id?

javascript - mongodb的mapreduce函数

node.js - 具有单个数据库的多个 Node 实例