我使用的是mongodb-native-driver,我不太清楚为什么他们总是在doc示例中设置batchSize = 1。
http://mongodb.github.io/node-mongodb-native/2.0/api/AggregationCursor.html#each
根据官方文档,不应使用等于1的batchSize: https://docs.mongodb.org/v3.0/reference/method/cursor.batchSize/
如果我设置batchSize = 1,会发生什么?每次检索文档时是否强制转到数据库?
这听起来很奇怪......这两个参考资料都是官方消息来源,所以我觉得我错过了一些东西。
答案 0 :(得分:0)
您正在引用mongo shell文档 - 如果您在那里使用cursor.batchSize(1),它将与limit()一样工作。
shell的行为与驱动程序的行为略有不同。
您显示的示例来自mongodb node.js驱动程序(不是来自mongo shell)。可以在那里使用batchSzie(1)。它将强制驱动程序进入数据库并在每次迭代时获取一个文档。您可以通过这种方式控制存储在内存中的文档数量。数字越大,从客户端到数据库的请求越少,存储在客户端内存中的文档就越多,同时迭代它们。
在您提供的示例中,{cursor:{batchSize:1}}是“聚合”方法的选项之一。 read the documentation here