初次接触小程序编程,真的是太痛苦了,原本几天可以完成的工作,用小程序一个月都搞不定,无力吐嘈。大家帮忙看看以下程序,就是我有一个存放“周次”的表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();
lookup能不用就不用,将多表设计到一张表里。
db.command.aggregate.in(value,array)难道只能在本集合列表里面匹配吗?跟db.command.in()作用很不一样,我要在pipeline里面通过让参数在传入的数组内,应该怎么写?