需求是这样的,而数据是从mysql导入进来的,由于mysql不支持数组类型的数据,所以有很多关联表。药剂里找药物,需要药剂与药物的关联表,然后再找药物表。从药物表里再找药物与成分关联表,最后再找成分表。
这里就涉及到了五张表的查询,之前的文章有讲解过多表查询这块。
mongodb以及mongoose插件如何多表查询,如同时查询店铺以及里面对应的商品_mongodb 多表查询-CSDN博客
这次我们来实战一下。
db.fangji.aggregate([
{
$match: {id:"2"},
},
{
$lookup: {
from: "fangji_herb",
localField: "fangji_id",
foreignField: "fangji_id",
as: "fangjiHerb"
}
},
{
$lookup: {
from: "herb_details",
localField: "fangjiHerb.herb_id",
foreignField: "herb_id",
as: "herbs"
}
},
{
$lookup: {
from: "offline_ingredient_herb",
localField: "fangjiHerb.herb_id",
foreignField: "herb_id",
as: "offlineIngredientHerb"
}
},
{
$lookup: {
from: "offline_ingredient",
localField: "offlineIngredientHerb.item_id",
foreignField: "item_id",
as: "offlineIngredient"
}
}
]);
不过最终结果还是都放在不同的数组里了,需要前端慢慢处理结构,并转换为树的结构