聚合查询(aggregate)的时候,报错,信息如下
Sort exceeded memory limit of 104857600 bytes, but did not opt in to external sorting. Aborting operation. Pass allowDiskUse:true to opt in.
mongo db查询时报的错,意思是
排序超过了104857600字节的内存限制,
以下这句话博主百度到比较合理的解释
mongo对大数据集进行aggregate集合操作,处理各stage阶段中,为了避免 pipeline 的 stage 的内存使用超过 100 MB 而报错。需要设置allowDiskUse为true使用系统缓存,以临时文件进行存储
直接说解决方案吧,加入{allowDiskUse:true}
注意 以下是 在mongo里面的操作代码,不是在eggjs里的!!!!!!!!!!!!!!!!!!!!!!!!!!!
db.a_log.aggregate([{
"$facet": {
"total": [{
"$count": "total"
}],
"data": [{
"$match": {}
}, {
"$sort": {
"createdAt": - 1
}
}, {
"$skip": 74990
}, {
"$limit": 10
}]
}
}], {allowDiskUse:true})
下面这个才是在 eggjs里的操作代码allowDiskUse 位置不一样哦,注意!!!!!!!!!
var results=await m.ctx.model.ALog.aggregate(paramsArr).allowDiskUse(true)//