mongodb 컬렉션에서 데이터를 가져 오려고 할 때 예외가 발생합니다. 이 컬렉션에는 매우 큰 데이터가 있습니다.Java with 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
}
문제를 해결하는 데 도움을주세요.
created_at에 색인을 정의하면 집계 중에 조작 된 데이터의 크기를 줄이는 데 도움이됩니다. –
빠른 답장을 보내 주신 JayKrish에게 감사드립니다. 하지만 그런 종류의 질문을 준비하는 데 도움이됩니다. –
문제는 $ group 때문에 $ addToSet을 사용하고 있습니다.이 경우 모든 고유 데이터가 배열에 추가되고 문서 크기가 증가합니다. 대신 이러한 문서에서 필요한 값만 가져 오십시오. – JayKrish