我尝试了以下方法,但查不出数据:
<unicloud-db ref="udb" collection="project-items,projects,goods" field="project_id{_id,name},good_id{_id,name}">
</unicloud-db>
共有3个表,project-items项目清单表;projects项目表;goods商品表。
project-items表:
[{
item_gn:"23908239230",
amount:10,
project_id:"xiangmu1",
good_id:"shangping1",
},{
item_gn:"18880321532",
amount:20,
project_id:"xiangmu1",
good_id:"shangping2",
}]
projects表:
[{
_id:"xiangmu1",
name:"项目1"
}]
goods表:
[{
_id:"shangping1",
name:"商品1"
},
{
_id:"shangping2",
name:"商品2"
}]
希望得到联合查询结果:
[{
item_gn:"23908239230",
amount:10,
project_id:[{ _id:"xiangmu1",name:"项目1" }],
good_id:[{ _id:"shangping1",name:"商品1" }],
},
{
item_gn:"18880321532",
amount:20,
project_id:[{ _id:"xiangmu1",name:"项目1" }],
good_id:[{ _id:"18880321532",name:"商品2" }],
}]
百倍 (作者)
非常谢谢!没想到有了意外收获。我的重新调整了一下需求内容,你看看有办法实现吗?
2021-04-13 08:34
名图客
回复 百倍: 要看你给的查询条件是什么,单项用==,多项用 in,混合查询用或与非,这与多少联表查询无关,联表查询只是主查询结果出来后,使用外键关联,附加上去的数据。
2021-04-13 10:04
名图客
联表唯一影响主查询的是,当使用了联表查询,where查询条件的变化。需要根据预期联表的结果来配置where条件。比如,要获取外键的project_id{_id,name},那么,where条件就不能再使用project_id,而是project_id._id 。多了个._id,也就是所谓的结果导向。
2021-04-13 10:07