h***@163.com
h***@163.com
  • 发布:2024-04-23 17:57
  • 更新:2025-02-09 21:42
  • 阅读:149

【报Bug】db aggregate lookup错误

分类:uniCloud

产品分类: uniCloud/App

操作步骤:

预期结果:

实际结果:

bug描述:

const dbCmd = db.command  
const $ = dbCmd.aggregate  
db.collection('bx_activity_join').aggregate().lookup({  
    from: 'uni-id-users',    
    let: {    
        _id: '$_id'    
    },    
    pipeline: $.pipeline()    
        .match(dbCmd.expr(    
            $.eq(['$_id', '$$_id'])    
        ))    
        .done(),    
    as: '某某'    
}).end();  

代码如上 (图1)我理解的 即使匹配数据为空 但是也不应该出现字符开头不正确的问题
当我换成原生mong的写法后 又提示另外的错误(图2)

const dbCmd = db.command  
const $ = dbCmd.aggregate  
db.collection('bx_activity_join').aggregate().lookup({  
    from: 'uni-id-users',    
    let: {    
        _id: '$_id'    
    },    
    pipeline: [{  
        $match:{  
            $expr:{  
                $eq:['$_id', '$$_id']  
            }  
        }  
    }],    
    as: '某某'    
}).end();  
2024-04-23 17:57 负责人:无 分享
已邀请:
DCloud_uniCloud_VK

DCloud_uniCloud_VK

let 内的变量不能和副表已经存在的字段重名,你需要换个变量名,比如用主表名 + 字段名方式起名

下面的代码代表 bx_activity_join 表的 user_id 和 uni-id-users表的_id进行连表的案例

const dbCmd = db.command    
const $ = dbCmd.aggregate    
db.collection('bx_activity_join').aggregate().lookup({    
    from: 'uni-id-users',      
    let: {      
        bx_activity_join_user_id: '$user_id'      
    },      
    pipeline: $.pipeline()      
        .match(dbCmd.expr(      
            $.eq(['$_id', '$$bx_activity_join_user_id'])      
        ))      
        .done(),      
    as: '某某'      
}).end();  
w***@qq.com

w***@qq.com

收藏

要回复问题请先登录注册