【发布时间】:2015-10-14 11:01:19
【问题描述】:
我正在尝试从 java 运行 mongo db 聚合查询,但缓冲区大小超过 16MB。有没有办法调整缓冲区大小或任何其他解决方法。我没有在 mongo 服务器端创建集合的选项,而且我的客户端系统中没有任何 mongo 实用程序,如 mongo.exe 或 mongoExport.exe。
这里是一小部分代码
if (!datasetObject?.isFlat && jsonFor != 'collection-grid'){
//mongoPipeline = new AggregateArgs (Pipeline = pipeline, AllowDiskUse = true, OutputMode = AggregateOutputMode.Cursor)
output= dataSetCollection.aggregate(pipeline)
}else{
output= dataSetCollection.aggregate(project)
}
我有 30 个字段的 100K 记录。当我为所有 100K 记录查询 5 个字段 时,我得到了结果(成功)。但是当我查询所有字段的 100K 记录时,它会抛出错误。
问题是当我尝试访问集合中的所有文档时,包括文档的 所有字段 超过 16Mb 的限制大小。
实际错误:
com.mongodb.CommandFailureException: { "serverUsed" : "127.0.0.1:27017" , "errmsg" : "exception: aggregation result exceeds maximum document size (16MB)" , "code" : 16389 , "ok" : 0.0
如何解决这个问题?
使用 MongoDB-3.0.6
注意:GridFS 不适合我的标准。因为我需要在一个请求中检索所有文档,而不是一个文档。
【问题讨论】:
-
嗯,不。在不分享您当前正在尝试的代码的情况下,获得更好方法建议的可能性也为零。
-
@BlakesSeven 查看更新的问题我保留了一些代码。
标签: java mongodb grails aggregation-framework mongodb-java