我每24小时在我的mongo数据库上执行一次大型聚合操作(60m记录=> 6m记录) . 为了防止我的服务器爆炸,我试图对聚合进行分页(一次约10,000条记录),然后我循环 .

我可以使用游标.next()或使用.toArray()循环,然后循环遍历数组 . 从mongo文档(https://docs.mongodb.com/manual/tutorial/iterate-a-cursor)看来:

  • 游标将从服务器获取一批文档并将它们存储到 disk

  • 而.toArray()将迭代光标的文档并将它们推入 memory .

我的问题是这个,当我使用cursor.next()它是否批量从磁盘获取文件,或一次一个?

在我想要一次循环超过10k条记录并将它们推送到另一个集合的情况下,.toArray()会更高效吗?文档说明.toArray()“消耗光标”,引擎盖是否一次从磁盘中提取一个文档?

谢谢