mongodb聚合查询

date
Sep 10, 2020
slug
mongodb
status
Published
tags
后端
summary
mongodb聚合查询的几种方式
type
Post

2个表关联查询

model.aggregate([
    $lookup:{
        from:"//关联的表名",
        localField:"本表的关联字段",
        foreignField:"关联表的关联字段",
        as:"保存的数组名称"
    }
],(err,res)=>{
    ...
})
notion image
  • 如图,一个订单下有很多个item,order表会通过order_id字段关联order_item表
//实例
//order表关联order_item表进行查询
//返回的数据保存为items数组
OrderModel.aggregate([
    $lookup:{
        from:"order_item",
        localField:"order_id",
        foreignField:"order_id",
        as:"items"
    }
],(err,res)=>{
    if(err){
        console.log(err)
    }
    return res
    ...
})

多表关联查询

  • 查询文章分类,作者,及作者信息
ArticleModel.aggregate([
    {
        $lookup:{
            from:'articlecate',
            localField:'cid',
            foreignField:'_id',
            as:'cate'
        }
    },
    {
        $lookup:{
            from:'user',
            localField:'author_id',
            foreignField:'_id',
            as:'userInfo'
        }
    }
],(err,res)=>{
    console.log(JSON.stringfy(res))
})

populate实现多表关联查询

  • 不方便 不用

© kaba 2019 - 2023