Skip to content
kaba

mongodb聚合查询

后端1 min read

2个表关联查询

1model.aggregate([
2 $lookup:{
3 from:"//关联的表名",
4 localField:"本表的关联字段",
5 foreignField:"关联表的关联字段",
6 as:"保存的数组名称"
7 }
8],(err,res)=>{
9 ...
10})
  • 如图,一个订单下有很多个item,order表会通过order_id字段关联order_item表
1//实例
2//order表关联order_item表进行查询
3//返回的数据保存为items数组
4OrderModel.aggregate([
5 $lookup:{
6 from:"order_item",
7 localField:"order_id",
8 foreignField:"order_id",
9 as:"items"
10 }
11],(err,res)=>{
12 if(err){
13 console.log(err)
14 }
15 return res
16 ...
17})

多表关联查询

  • 查询文章分类,作者,及作者信息
1ArticleModel.aggregate([
2 {
3 $lookup:{
4 from:'articlecate',
5 localField:'cid',
6 foreignField:'_id',
7 as:'cate'
8 }
9 },
10 {
11 $lookup:{
12 from:'user',
13 localField:'author_id',
14 foreignField:'_id',
15 as:'userInfo'
16 }
17 }
18],(err,res)=>{
19 console.log(JSON.stringfy(res))
20})

populate实现多表关联查询

  • 不方便 不用