收藏
回答

聚合无法查询到数据

框架类型 问题类型 终端类型 AppID 环境ID 基础库版本
小程序 Bug 微信安卓客户端 wx1694e6399e9b88c2 newcharging1103-2gsxyyfi314739c3 2.16.0

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']),

                else0

            })

        })

        // .limit(100)

        // .group({

        //   _id:{

        //     cellId:'$cellId',

        //     cellName:'$cellName',

        //     hostNum:'$hostNum'

        //   },

        //   num:$.sum(1),

        //   consumptionAll:$.sum('$consumption'),

        //   amountAll:$.sum('$amount')

        // })

        .end()

执行上述代码的时候,注释掉的部分注释掉是正常的,返回其中一条数据如下:

但是把注释去掉就不能正常运行了,报错如下:


是在腾讯云控制台那边的高级操作操作的,不知道怎么破? 或者 有其余方法达到我要的功能吗?

这数据量也不大,也就1W的级别吧

最后一次编辑于  2021-05-05
回答关注问题邀请回答
收藏

2 个回答

  • 老张
    老张
    2021-05-05

    谢邀。

    放在云函数里运行,将云函数的超时时限设为20秒;

    2021-05-05
    有用
    回复 4
    • searchFan
      searchFan
      2021-05-05
      我是要放在云托管的~后台使用,用的 express框架
      2021-05-05
      回复
    • 老张
      老张
      2021-05-05回复searchFan
      云托管没用过。但是云托管不能修改超时时限的吗?目测肯定是可以的,找找看,改吧。
      2021-05-05
      回复
    • searchFan
      searchFan
      2021-05-05回复老张
      数据库那边不行~  我要先在本地测试了才能上传上去。数据库虽然是共用的~ 腾讯云控制台那边的高级操作都挂了。。。
      2021-05-05
      回复
    • searchFan
      searchFan
      2021-05-07
      我问题 解决了,提了个工单,只要在我的 lookup匹配的那几个字段加上单个索引就解决了,非常感谢回复。
      2021-05-07
      回复
  • 郑旭东
    郑旭东
    2021-05-05

    不是写着超时了吗,多次lookup性能很差。

    2021-05-05
    有用
    回复 6
    • searchFan
      searchFan
      2021-05-05
      这是没办法的。。
      2021-05-05
      回复
    • searchFan
      searchFan
      2021-05-05
      数据库结构不能改了
      2021-05-05
      回复
    • searchFan
      searchFan
      2021-05-05
      而且,我把第一个 lookup注释掉也不行
      2021-05-05
      回复
    • searchFan
      searchFan
      2021-05-07
      我问题 解决了,提了个工单,只要在我的 lookup匹配的那几个字段加上单个索引就解决了,非常感谢回复。
      2021-05-07
      回复
    • 郑旭东
      郑旭东
      2021-05-07回复searchFan
      嗯,记录多了索引一定要加上
      2021-05-07
      回复
    查看更多(1)
登录 后发表内容