【问题标题】:MongoDB unwind commandsMongoDB 展开命令
【发布时间】:2017-02-26 16:55:41
【问题描述】:

我正在尝试展开文档中的数组。

{ //document
    ...
    parameters : [{...}, {...}, ...]
}

这是一个有效的命令:

db.getCollection('inventory').aggregate([
    { $unwind : "$parameters" }
]);

我正在尝试使用db.runCommand 来完成相同的任务:

db.runCommand({
    aggregate: "inventory",
    pipeline: [{ $unwind: "$parameters" }]
});

但是使用第二个选项,我得到了这个错误:

聚合结果超过最大文档大小 (16MB)

这些命令不一样吗?为什么第二个不起作用?

我正在使用适用于 PHP 7 的 Mongo PHP 驱动程序,这就是我以这种方式进行聚合的原因。

【问题讨论】:

  • allowDiskUse 设置为 true 可能会解决问题。不过,为什么只有 runCommand 才会出现这种情况是一个很好的问题。

标签: php mongodb


【解决方案1】:

db.runCommand 在一个文档中返回结果。所以,所有的聚合结果都大于 16MB。将batchSize 设置为cursor 选项可能会解决问题。

使用MongoDB::execute,我可以这样执行查询:db.collection.aggregate(... 只需传递原始的 mongo 语法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 2019-11-22
    • 2021-08-29
    • 2019-03-04
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    相关资源
    最近更新 更多