db.collection('userinfo')
.aggregate()
.unwind('$account')
.lookup({
from: 'cellinfo',
localField: 'account.cellId',
foreignField: '_id',
as: 'cell'
})
.unwind('$cell')
.lookup({
from: 'orderinfo',
let: {
order_cellId: '$account.cellId',
order_userId: '$_id'
},
pipeline: $.pipeline()
.match(_.expr($.and([
$.eq(['$userId', '$$order_userId']),
$.eq(['$cellId', '$$order_cellId']),
$.gte(['$startTime', '2021-01-12 19:25:51']),
$.lte(['$startTime', '2021-01-13 19:25:51'])
])))
.project({
_id: 0,
consumption: 1
})
.done(),
as: 'orderList'
})
.project({
cellId: '$account.cellId',
cellName: '$cell.name',
hostNum:$.size('$cell.hosts'),
consumption: $.sum($.map({
input: '$orderList',
as: 'order',
in: $.sum('$$order.consumption'),
})),
amount: $.cond({
if: $.gte(['$account.amount', '$account.gifttotalamount']),
then: $.subtract(['$account.amount', '$account.gifttotalamount']),
else: 0
})
})
// .limit(100)
// .group({
// _id:{
// cellId:'$cellId',
// cellName:'$cellName',
// hostNum:'$hostNum'
// },
// num:$.sum(1),
// consumptionAll:$.sum('$consumption'),
// amountAll:$.sum('$amount')
// })
.end()
执行上述代码的时候,注释掉的部分注释掉是正常的,返回其中一条数据如下:
但是把注释去掉就不能正常运行了,报错如下:
是在腾讯云控制台那边的高级操作操作的,不知道怎么破? 或者 有其余方法达到我要的功能吗?
这数据量也不大,也就1W的级别吧
谢邀。
放在云函数里运行,将云函数的超时时限设为20秒;
不是写着超时了吗,多次lookup性能很差。