MongoDB 3.6聚合返回第一批

MongoDB 3.6聚合返回第一批,mongodb,aggregation-framework,aggregate,Mongodb,Aggregation Framework,Aggregate,在MongoDB 3.4中(根据文档,仍然是3.6),collection.aggregate([…])方法返回一个游标。然后我们可以做collection.aggregate([…]).toArray()或.forEach()。并获取或迭代结果数组 由于3.6(表明现在需要光标选项,该选项未在文档中指定),以下命令: collection.aggregate( [...], { cursor: { batchSize: 10 } } ) 返回具有此形状的对象: { "cursor

在MongoDB 3.4中(根据文档,仍然是3.6),collection.aggregate([…])方法返回一个游标。然后我们可以做
collection.aggregate([…]).toArray()
.forEach()
。并获取或迭代结果数组

由于3.6(表明现在需要
光标
选项,该选项未在文档中指定),以下命令:

collection.aggregate(
  [...],
  { cursor: { batchSize: 10 } }
)
返回具有此形状的对象:

{
  "cursor": {
    "firstBatch": [...],
    "id",
    "ns"
  },
  "ok": 1,
  "$clusterTime": {...},
  "operationTime": Timestamp(1525344553, 1)
}
不再可能对整个结果进行迭代,并且
collection.aggregate([…])。toArray()
不是一个函数。 A发现了一些问题,但没有什么真正相关的。 医生在这方面确实过时了,我甚至不确定这是否是预期的行为


注意:我在mongoshell中运行它,但在最后一个节点驱动程序中也遇到了这些问题。

问题来自mongo hacker

嗨,科哈斯,你能澄清一下吗?当你说不可能对整个结果进行迭代时,你能描述一下在尝试时出现了什么问题吗?因此,当您执行
cursor.next()
等操作时,它是否会在第一批10次之后停止?或者它根本不迭代?就像
toArray()
forEach()
:不是函数。问题实际上来自mongo黑客et,而不是mongoshell本人……啊,这可能是至关重要的。如果我理解的没错,你在尝试通过mongo hacker迭代聚合结果时会出现这些错误,但是如果你在mongo shell中以本机方式进行聚合,它会正常工作吗?是的,就是这样,如果mongo hacker听不到你已经隔离了问题,它会正常工作;我认为最好的方法是直接向mongo-hacker发起攻击。和3年前报道的针对mongo-hacker的问题一样?我还以为是刚开始呢。我不能确定,因为它没有提到
{cursor:{firstBatch:[]}}
的结果。此外,3.4中的情况并非如此。