Vik*_*tel 7 database mongodb mongodb-query ubuntu-18.04
当我使用此查询时出现此错误:
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"}}])
Run Code Online (Sandbox Code Playgroud)
我需要做什么改变?我不想改变查询,那么如何增加这个限制,或者我需要走一些数据归档方法?
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)
Run Code Online (Sandbox Code Playgroud)
小智 7
您可以添加allowDiskUse与第二个聚合函数,例如:
db.getCollection("loans_unique").aggregate([{
"$group": {
"_id": {
phone: "$phone",
address: "$address",
title: "$title"
},
"count": {
"$sum": 1
}
}
},
{
$sort: {
"count": -1
}
},
{
$match: {
"count": {$gt: 1}
}
}
], {
allowDiskUse: true
})
Run Code Online (Sandbox Code Playgroud)