database - Mongo 错误查询ExceededMemoryLimitNoDiskUseAllowed
问题描述
当我使用此查询时出现此错误:
db2.collection('candata')
.aggregate([{$sort:{time:-1}},{$group:{_id:{batteryId:"$batteryId"},soctime:{$first:"$time"},GPSStatus:{$first:"$GPSStatus"},CANStatus:{$first:"$CANStatus"},soc: { $first : "$socpercentage" },charging_status: { $first : "$charging_status" },status: { $first : "$status" }}},{$sort:{'_id.batteryId':1}},{$lookup:{from : "swap_table",localField : "_id.batteryId",foreignField:"batteryId",as:"swap"}},{$lookup:{from : "battery_status_table",localField : "_id.batteryId",foreignField:"batteryId",as:"battery_statustb"}}])
我需要做什么改变?我不想更改查询,那么如何增加这个限制,或者我需要去一些数据存档的方法?
解决方案
在查询末尾添加allowDiskUse
并将其设置为 true,使其如下所示:
db2.collection('candata')
.aggregate([{$sort:{time:-1}},{$group:{_id:{batteryId:"$batteryId"},soctime:{$first:"$time"},GPSStatus:{$first:"$GPSStatus"},CANStatus:{$first:"$CANStatus"},soc: { $first : "$socpercentage" },charging_status: { $first : "$charging_status" },status: { $first : "$status" }}},{$sort:{'_id.batteryId':1}},{$lookup:{from : "swap_table",localField : "_id.batteryId",foreignField:"batteryId",as:"swap"}},{$lookup:{from : "battery_status_table",localField : "_id.batteryId",foreignField:"batteryId",as:"battery_statustb"}}]).allowDiskUse(true)
推荐阅读
- javascript - 如何使用 XHRWebRequest 在 URL 上上传文件?
- c++ - OpenGL着色器和绘图命令的共存
- amazon-web-services - CDK Lambda 和 S3 工件循环依赖
- css - 如何确保我的 CSS 样式正确应用于从数组映射的项目
- python - 在 Python 中比较列表的匹配元素
- python - 找到具有缩放和非缩放数据的最佳集群数量的问题
- c# - 如何让机器人明白我在网络聊天中说印地语
- c# - 绑定到过滤后的可观察集合
- regex - grep 没有显示不可打印的分隔符
- amazon-web-services - AWS BATCH - 如何运行更多并发作业