当我试图从mongodb集合中获取数据时,我得到了以下异常。这个集合有非常庞大的数据。
例外情况是:
com.mongodb.MongoQueryException: Query failed with error code 10334 and error message 'BSONObj size: 24020168 (0x16E84C8) is invalid. Size must be between 0 and 16793600(16MB)' on server 10.15.0.227:27017
下面是我用来从mongodb获取数据的查询:
db.getCollection('triggered_policies').aggregate(
[{ "$match" : { "policy_name" : "EIQSOC-1040-ec"}},
{ "$project" : { "cust_created_at" : { "$add" : [ "$created_at" , 19800000]} , "event_ids" : "$event_ids" , "trigger_time" : "$trigger_time" , "created_at" : "$created_at" , "triggered_rules" : "$triggered_rules"}},
{ "$sort" : { "created_at" : -1}},
{ "$group" :
{ "_id" :
{
"$hour" : "$cust_created_at"} ,
"triggered_policies" : { "$addToSet" : { "trigger_time" : "$trigger_time" , "created_at" : "$created_at" , "event_ids" : "$event_ids" , "triggered_rules" : "$triggered_rules"}
}
}
},
{ "$sort" : { "_id" : 1}}
])
以下是我们得到的确切异常:
Error: getMore command failed: {
"ok" : 0,
"errmsg" : "BSONObj size: 25994482 (0x18CA4F2) is invalid. Size must be between 0 and 16793600(16MB)",
"code" : 10334
}
请帮助我们解决这个问题。
发布于 2017-04-06 09:42:36
在聚合期间创建的文档似乎超过了mongo db中的16MB大小限制。您可能需要更改聚合查询,以避免将太多数据累积到超过16MB大小限制的单个文档中。
以下是Mongo DB文档中的引用:
BSON文档大小最大BSON文档大小为16兆字节。最大文档大小有助于确保单个文档在传输过程中不会使用过多的RAM或过多的带宽。为了存储大于最大大小的文档,MongoDB提供了GridFS接口。有关GridFS的更多信息,请参阅您的驱动程序的more文件和文档。
https://stackoverflow.com/questions/43251318
复制相似问题