微信云开发联表查询 表1与表2关联 表2与表3关联

本文介绍了如何通过MongoDB的Aggregation Pipeline实现转盘抽奖游戏,包括从转盘抽奖表、卡券表及卡券档案表中关联数据,利用`lookup`和`replaceRoot`函数完成数据转换。代码展示了如何匹配卡券ID和档案ID,获取奖品详情。
摘要由CSDN通过智能技术生成

业务逻辑
实现转盘抽奖游戏
需求数据
1.转盘抽奖表
2.转盘奖品对用的卡券表
3.卡券对应的卡券档案表
三表关系 抽奖表的 cardid(卡券ID) 等于 卡券表的(id) ,卡券表的(daid) 等于 卡券档案的主键ID
废话不多说上代码,
思路:通过 Aggregate.replaceRoot函数把子表数据先转换成主表数据在和后面表做对比

db.collection('chou_jiang').aggregate()
  .lookup({
    from: 'card',
    localField: 'cardid',
    foreignField: '_id',
    as: 'card'
  })
  .replaceRoot({
    newRoot: $.mergeObjects([$.arrayElemAt(['$card', 0]), '$$ROOT'])
  })
  .lookup({
    from: 'coupon',
    let: {
      daid: '$daid',
    },
    pipeline: $.pipeline()
      .match(_.expr($.eq(['$_id', '$$daid'])))
      .project({
        _id:1,
        cardname:1,
        cardimg:1,
      })
      .done(),
    as: "coupon"
  })
  .end()

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值