collection.find()。stream()和collection.find()之间的区别.batchSize(100).stream()?

时间:2014-12-29 07:10:28

标签: javascript node.js mongodb mongodb-query

collection.find()。stream()和collection.find()之间有什么区别.batchSize(100).stream()?

1 个答案:

答案 0 :(得分:2)

关于.batchSize()实际上是什么,我之前似乎有一些普遍的混淆。常见的混淆是它类似于.limit(),这在文档中的这个注释中并没有真正帮助:

  

注意
  指定1或负数类似于使用limit()方法。

虽然该声明对于该示例点基本上是正确的,但通用目的是不同的。

当迭代“游标”或使用.stream() API(这是一个node.js stream可读接口的实现(以及2.0版游标的默认)时,有一个基础优化使用此接口与服务器通信时的驱动程序。

当您对流使用游标.next()"data" .on()方法时,实际上并不会返回到服务器并只获取结果集中的下一个文档。它实际上做的是在光标中获取对应于作为参数给出的“batchSize”的“批量”文档。

这允许您在此修改默认值,并将默认值“更改”为更适合您自己流程的内容。

与诸如.toArray()之类的方法不同,这并不会尝试将单个数据库调用中的整个结果集(实际上从未真正做过)读入内存中的变量。游标和流方法允许处理“游标”,其中结果以“批次”形式表示,并且通常“单独”处理。