MongoDB 3.6聚合返回第一批
在MongoDB 3.4中(根据文档,仍然是3.6),collection.aggregate([…])方法返回一个游标。然后我们可以做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
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中的情况并非如此。