f***@163.com
f***@163.com
  • 发布:2025-01-22 19:54
  • 更新:2025-02-09 21:41
  • 阅读:94

使用联表查询时,对子表设置多个条件时,报错invalid $lookup

分类:uniCloud

主表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()
2025-01-22 19:54 负责人:无 分享
已邀请:
yukio

yukio - yukio

是不是支付宝免费版?我用jql写法,副表加条件,排序都无效,现在联查2个副表,只有一个能查出来,干蒙圈了

  • yukio

    关键是前两天都能查出两副表

    2025-01-22 23:02

f***@163.com

f***@163.com (作者)

看来是同样的问题。是支付宝的免费版的,最近在测试代码时就发觉这样,折腾好几天了,没折了。

w***@qq.com

w***@qq.com

收藏

要回复问题请先登录注册