收藏
回答

云开发db.command.aggregate.in怎么实现db.command.in用法不一样的?

初次接触小程序编程,真的是太痛苦了,原本几天可以完成的工作,用小程序一个月都搞不定,无力吐嘈。大家帮忙看看以下程序,就是我有一个存放“周次”的表weeks,想与存放周记文件的zjfiles联合查询,两个表通过共有的列weekid和taskid进行联合,同时zjfiles当中的userid要在event.userlist数列当中,使用了$.in(['$$userid',event.userlist])完全无效。 请大家指点一下,拜托了!

return await db.collection('weeks').aggregate()

          .sort({weekID:-1})

          .lookup({

            from: 'zjfiles',

            let:{wkid:'$weekID',taskid:'$taskid',userid:'$userid'},

            pipeline:$.pipeline().match(db.command.expr($.and([$.eq(['$weekid','$$wkid']),$.in(['$$userid',event.userlist]),$.eq(['$taskid','$$taskid'])])))

            .done(),

            as:'zjfiles'

          })

          .match({

            bdate: db.command.lt(mydatesp),

          })

          .match({taskid:db.command.eq(parseInt(event.taskid))})

          .end();

回答关注问题邀请回答
收藏

2 个回答

  • 跨商通
    跨商通
    04-15

    lookup能不用就不用,将多表设计到一张表里。

    04-15
    有用
    回复
  • 蓝影
    蓝影
    04-14

    db.command.aggregate.in(value,array)难道只能在本集合列表里面匹配吗?跟db.command.in()作用很不一样,我要在pipeline里面通过让参数在传入的数组内,应该怎么写?


    04-14
    有用
    回复
登录 后发表内容