1.联表查询lookup
const dbCmd= db.command;
const $ =dbCmd.aggregate; //方便查询写,定义
const getSoup=()=>{
db.collection("soup-chicken").aggregate()
.match(`status==1`)
.lookup({
from:"uni-id-users", 连接子表
let:{
uid:'$user_id' 这里的uid是主表的,这是定义一个变量方便写
},
pipeline:$.pipeline().match(dbCmd.expr($.eq(['$_id','$$uid']))).project({username:1,avatar:1}).done(), //子表查询通道,$.pipeline()开始,done()结束,$.eq(['$_id','$$uid']比较数据一样否,返回真假,dbCmd.expr查询操作符,用于在查询语句中使用聚合表达式,方法接收一个参数,该参数必须为聚合表达式,用了这个才能在子通道里面match生效
使用说明
as:'userInfo' //放入到这个字段里面
})
.sample({
size:5
})
.limit(5)
.end().then(res=>{
console.log(res)
})
}