收藏
回答

请教一下表连接应该怎么做?

大家好,我最近刚刚开始做小程序的开发,对云数据库的操作有很多疑问,请教一下关于表连接的写法

我有两个表 商品表goods 和 商品类型表goods_type

商品表字段:_id name goodsTypeid

商品类型表字段:_id,title

我希望能一次性获取到 商品表信息,同时每个商品对应的商品类型title也拿到

现在我是这么写的

 cloud.database().collection("goods")
    .aggregate()
    .lookup({
      //表连接 A+B
      from'goods_type',
      //A表字段
      localField'goodsTypeId',
      //对应B表字段
      foreignField'_id',
      //B表别名
      as'goodsTypeList'
    })
    .end();

这样我确实拿到了商品表的信息,但是商品表里的类型是数组的形式给我的,数组里有一条数据,就是商品对应的类型

请问我应该怎么做才可以直接获取到类型title,而不是数组呢?

回答关注问题邀请回答
收藏

1 个回答

  • 齐明
    齐明
    2020-05-26
      var db = cloud.database()
      var $ = db.command.aggregate
      return db.collection('goods').aggregate()
        .lookup({
          from"goods_type",
          localField: "goodsTypeId",
          foreignField: "_id",
          as"goodsTypeList"
        })
        .replaceRoot({
          newRoot: $.mergeObjects([ $.arrayElemAt(['$goodsTypeList'0]), '$$ROOT' ])
        })
        .project({
          goodsTypeList: 0
        })
        .end()
    

    照着lookup的例子做出来了,实现了我想要的效果,只是不明白怎么实现的...

    .replaceRoot({
          newRoot: $.mergeObjects([ $.arrayElemAt(['$goodsTypeList'0]), '$$ROOT' ])
        })
        .project({
          goodsTypeList0
        })
    

    尤其是这一部分

    2020-05-26
    有用
    回复
登录 后发表内容
问题标签