MongoDB内存不足怎么情况,怎么解决
这篇文章主要介绍“MongoDB内存不足怎么情况,怎么解决”的相关知识,下面会通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MongoDB内存不足怎么情况,怎么解决”文章能帮助大家解决问题。
以上就是关于“MongoDB内存不足怎么情况,怎么解决”的介绍了,感谢各位的阅读,如果大家想要了解更多相关的内容,欢迎关注博信,小编每天都会为大家更新不同的知识。
mongodb每一个文档默认只有16M。聚合的结果是一个BSON文档,当超过16M大小时,就会报内存不够错误。
exceeded memory limit for $group.but didn't allow external sort.
可以采用打开使用磁盘来解决大小问题。例如
db.flowlog.aggregate([{$group:{_id:"$_id"}}], {allowDiskUse: true})
java代码片段
AggregationOptionsoptions=newAggregationOptions.Builder().allowDiskUse(true).build(); Aggregationagg=Aggregation.newAggregation().withOptions(options);
但是如果结果集超过了16M,那么依然会报错误。
采用一个下面的聚合方法
Aggregationagg=Aggregation.newAggregation( Aggregation.group(field1 ,field2 ,field3) .sum(field4).as("sampleField1") .sum(field5).as("sampleField2"), Aggregation.project(field4,field5), newAggregationOperation(){ @Override publicDBObjecttoDBObject(AggregationOperationContextcontext){ returnnewBasicDBObject("$out","test"); } }).withOptions(options); mongo.aggregate(agg,sourceCollection,Test.class);
如果要在聚合的时候增加一个常量,可采用以下形式
Aggregationagg=Aggregation.newAggregation( Aggregation.group( ,OnofflineUserHistoryField.MAC ,StalogField.UTC_CODE) .sum(OnofflineUserHistoryField.WIFI_UP_DOWN).as(OnofflineUserHistoryField.WIFI_UP_DOWN) .sum(OnofflineUserHistoryField.ACTIVE_TIME).as(OnofflineUserHistoryField.ACTIVE_TIME), Aggregation.project("mac","buildingId","utcCode",OnofflineUserHistoryField.ACTIVE_TIME,OnofflineUserHistoryField.WIFI_UP_DOWN).and( newAggregationExpression(){ @Override publicDBObjecttoDbObject(AggregationOperationContextcontext){ returnnewBasicDBObject( "$cond",newObject[]{ newBasicDBObject( "$eq",newObject[]{"$tenantId",0} ), 20161114, 20161114 }); } }).as("day").andExclude("_id"), 或者 and(newAggregationExpression(){ @Override publicDBObjecttoDbObject(AggregationOperationContextcontext){ returnnewBasicDBObject("$add",newObject[]{20141114}); } }).as("day").andExclude("_id"), newAggregationOperation(){ @Override publicDBObjecttoDBObject(AggregationOperationContextcontext){ returnnewBasicDBObject("$out","dayStaInfoTmp"); } }).withOptions(options);
以上就是关于“MongoDB内存不足怎么情况,怎么解决”的介绍了,感谢各位的阅读,如果大家想要了解更多相关的内容,欢迎关注博信,小编每天都会为大家更新不同的知识。
版权声明
本文仅代表作者观点,不代表博信信息网立场。