【问题标题】:MongoDB Java client allowDiskUse does not workMongoDB Java 客户端 allowDiskUse 不起作用
【发布时间】:2021-01-12 13:53:37
【问题描述】:

我在 MongoTemplate 中使用了 allowDiskUse 选项:

AggregateIterable<Document> results = mongoTemplate.getCollection("match")
            .aggregate(...).allowDiskUse(true)

仍然出现此错误:

超过 $group 的内存限制,但不允许外部排序。传递 allowDiskUse:true 以选择加入。

有问题吗?

请注意,我使用的是 mongo java 客户端 3.11 和 mongo atlas M2 (v 4.2.9)

我也尝试过使用 batchSize 和 useCursor,但没用

【问题讨论】:

  • 验证它是否适用于 mongo shell 和最新的驱动程序版本。
  • 我在 mongoshell 中遇到了同样的错误。我尝试使用 db.runCommand(...) 和 db.getCollection("...").aggregate(...) 命令
  • 从问题中描述正确用法(用于 mongo shell)的参考文档,并确保您按照文档发出命令。

标签: java mongodb mongotemplate


【解决方案1】:

应该是这样的:

AggregationResults<Document> results = mongoTemplate.aggregate(new Aggregation(aggregationOperation1, aggregationOperation2, aggregationOperation3, ....).withOptions(AggregationOptions.Builder.allowDiskUse(true)), "match", Document.class);

当然你必须定义你的聚合操作。

【讨论】:

  • 我尝试了同样的错误。我尝试直接在mongoshell中运行命令,也得到了同样的错误。
  • 尝试使用最新的驱动版本。
猜你喜欢
  • 2016-10-24
  • 1970-01-01
  • 2016-03-19
  • 1970-01-01
  • 1970-01-01
  • 2017-06-04
  • 2020-10-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多