请教一下表连接应该怎么做?
大家好,我最近刚刚开始做小程序的开发,对云数据库的操作有很多疑问,请教一下关于表连接的写法
我有两个表 商品表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 回复
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({
goodsTypeList: 0
})
尤其是这一部分