【问题标题】:MongoDB 3.6 aggregate returns firstBatchMongoDB 3.6 聚合返回 firstBatch
【发布时间】: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


【解决方案1】:

问题来自 mongo-hacker...

【讨论】:

  • 与(3 年前)针对 mongo-hacker 报告的此问题相同? github.com/TylerBrock/mongo-hacker/issues/141
  • 我以为是一开始。我不能确定,因为它没有提到{ cursor: { firstBatch: [] } } 的结果。此外,在 3.4 中并非如此。
猜你喜欢
  • 2015-07-23
  • 2016-08-10
  • 2018-04-13
  • 1970-01-01
  • 2018-11-20
  • 2017-02-28
  • 2021-11-18
  • 2021-07-28
  • 2021-09-20
相关资源
最近更新 更多