【四】鸡汤来咯开发学习笔记-70

前端 · 2024-08-21

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)
  })
}


Theme Jasmine by Kent Liao