无

h***@163.com
- 发布:2024-04-23 17:57
- 更新:2025-02-09 21:42
- 阅读:171
产品分类: 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();



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();