微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MongoSocketReadException 由带有推送的组聚合管道引起:$$ROOT 运算符对具有多达 100 万个文档和 4GB 的集合

如何解决MongoSocketReadException 由带有推送的组聚合管道引起:$$ROOT 运算符对具有多达 100 万个文档和 4GB 的集合

我不断收到错误消息:

Exception: com.mongodb.MongoCommandException: Command Failed with error 10334 (Location10334):
'BSONObj size: 16997535 (0x1035C9F) is invalid. Size must be between 0 and 16793600(16MB)

com.mongodb.MongoSocketReadException: Prematurely reached end of stream

我的部分汇总如下

db.getCollection('super.duper.collection').aggregate([
    {$match : {'some.filter' : 'filterValue'}},{$project : {'some.project.field' : 1}},{$group : {_id : '$a.field',someRootEntries : {$push : '$$ROOT'}}},{$project : {'someRootEntries.fields : 1}},],{allowdiskUse : true})

小组赛前的聚合大约有 850 000 个文档,都相当大。 该集合有 4 GB 大。小组赛阶段会将文件数量减少到数十或数百个非常大的文件,我认为这是我正在处理的问题的核心。 问题:如何在 mongodb 中对过多的大文档进行分组而不出现 mongoReadSocketException?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。