收藏
回答

云函数连表查询语句问题?

有两张表 ,一个是问题表,一个是收藏表,怎么在查询的时候查出这个问题表里用户是否收藏过,查询要做分页的

问题表:id,question。收藏表:id,question_id,open_id,查问题表,并且查这个每个问题下这个用户是否收藏过,没收藏过也要查出来。要做分页处理。


  1. 感谢各位,可能是我描述不清楚,自己解决了 ,

$.pipeline()

.match(_.expr($.and([

$.eq(['$question_id', '$$_id']),

$.eq(['$open_id', open_id]

])))


最后一次编辑于  04-05
回答关注问题邀请回答
收藏

3 个回答

  • 跨商通
    跨商通
    04-04

    1、在云函数中用lookup实现关联查询;

    2、最好改表结构:表

    question:{

    makrs:['openid1','openid2']

    }

    04-04
    有用
    回复
  • شەرەر
    شەرەر
    04-04

    lookup 连起来就可以。

    let OPENID = '用户 OpenID';
    let count = 20; // 获取数据数量
    let page = 1; // 获取数据的页面号
    // 文章表为:articles,收藏表为:saves。
    let res = await db.collection("saves").aggregate().project({ _id: 0 })
        .match({ _openid: OPENID }).limit(count).skip((page - 1) * count)
        .lookup({
          from'articles',
          localField: '_article',
          foreignField: '_id',
          as'list'
        })
        .replaceRoot({
          newRoot: $.mergeObjects([ $.arrayElemAt(['$list'0]), '$$ROOT' ])
        })
        .project({ list: 0 })
        .end();
    
    04-04
    有用
    回复 1
    • 🌟
      🌟
      发表于移动端
      04-04
      这个应该不对,一开始收藏表用户是没收藏的,但是问题表也要能查出来,查出来的一个字段应该是收藏标记为没有收藏
      04-04
      回复
  • Eric
    Eric
    04-04

    可参考云开发的联表查询能力:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/database/join.html

    04-04
    有用
    回复 5
    • 🌟
      🌟
      发表于移动端
      04-04
      我知道是这个 没写出来
      04-04
      回复
    • Eric
      Eric
      04-04回复🌟
      那把代码贴出来啊,否则这么回答
      04-04
      回复
    • 🌟
      🌟
      04-04回复Eric
      问题表:id,question。收藏表:id,question_id,open_id,查问题表,并且查这个每个问题下这个用户是否收藏过,没收藏过也要查出来。要做分页处理。


      更新了,就是不知道lookup要怎么写
      04-04
      回复
    • Eric
      Eric
      04-05回复🌟
      04-05
      回复
    • 🌟
      🌟
      04-05回复Eric
      已经解决了 谢谢
      04-05
      回复
登录 后发表内容
问题标签