【发布时间】:2018-05-03 11:35:04
【问题描述】:
在 MongoDB 3.4 中(根据文档仍在 3.6 中),collection.aggregate([...]) 方法返回一个游标。然后我们可以做collection.aggregate([...]).toArray() 或.forEach()。并获取或迭代结果数组。
从 3.6 开始(除了现在需要 cursor 选项的事实,文档中没有指定),以下命令:
collection.aggregate(
[...],
{ cursor: { batchSize: 10 } }
)
返回具有此形状的对象:
{
"cursor": {
"firstBatch": [...],
"id",
"ns"
},
"ok": 1,
"$clusterTime": {...},
"operationTime": Timestamp(1525344553, 1)
}
不可能再遍历整个结果,collection.aggregate([...]).toArray() 不是一个函数。
A 发现了一些关于此的问题,但没有什么真正相关的。
该文档在这方面确实过时了,我什至不确定这是预期的行为。
注意:我在 mongoshell 中运行它,但在最后一个节点驱动程序中也遇到了这些问题。
【问题讨论】:
-
嗨 Cohars 你能澄清一下吗?当您说不可能迭代整个结果时,您能描述一下尝试时出了什么问题吗?那么当你做
cursor.next()之类的时候,第一批十个之后就停止了吗?还是根本不迭代? -
就像
toArray()或forEach():不是函数。问题实际上来自 mongo-hacker 而不是 mongoshell 本人...... -
啊,这可能很关键。因此,如果我对您的理解正确,您会在尝试 通过 mongo-hacker 迭代聚合结果时遇到这些错误,但是如果您在 mongo shell 中本地执行它,它可以正常工作吗?跨度>
-
是的,就是这样,没有 mongo-hacker 就可以正常工作
-
很高兴听到您解决了问题;我认为最好的方法是直接联系 mongo-hacker。
标签: mongodb aggregation-framework aggregate