主表tb_dic_word_3与副表tb_plan_details通过外键word_id相关联。关联查询时,如果仅仅只有第一个条件1,能正确运行。但想对副表增加额外条件时,就报错了invalid $lookup。查了很多资料,不清楚错误在哪。多个条件到底应该怎么写呢?
const dbCmd = db.command;
const $ = dbCmd.aggregate;
const rsp = await db.collection("tb_dic_word_3") //A表
.aggregate()
.lookup({
from: 'tb_plan_details', // 联表查询的目标集合 B表
let: {
dic_wordid: '$word_id', //A表的字段,前边为变量名,后边为字段名
},
pipeline: $.pipeline()
.match(dbCmd.expr($.and([ //$字段,为B表中的字段名
$.eq(['$word_id','$$dic_wordid']), //条件1
$.eq(['$plan_id', '67874191e7553f99ddc252a1']), // 条件2
])))
.project({
_id: 0,
plan_id: 1,
word_id: 1
})
.done(),
as: 'matchedData' // 联表查询结果的别名
})
.limit(2) // 限制返回 10 条记录;
.end()
yukio
关键是前两天都能查出两副表
2025-01-22 23:02