db.getCollection('test1_table')
.aggregate([
#左表‘test1_table’条件过滤
{$match:{"cityName":"重庆市","districtName":"九龙坡区","month":{$gte:202005,$lte:202008}}}
{
#表连接操作
$lookup:{
from:"test2_table",
#根据量个和多个字段进行表关联
let:{"cityId":"$cityId","month":"$month"},
#连接操作管道
pipeline:
[{
#左表对应字段和右表相等来连接$cityId,$month左表对应 let:{"cityId":"$cityId","month":"$month"} 中的字段,$$cityId、$$month右表对应字段值
$match:{$expr:{$and:[{$eq: ["$cityId","$$cityId" ]},{$eq:["$month","$$month"]}]}}
}],
#连接后右表test2_table数据在左表test1_table结构下的字段名
as:"data"
}
},
#右表条件过滤
{$match:{"data.type":"1","data.num":{$gte:0,$lte:10},"data.isDeleted":false}},
#拆分数组,空数组也进行拆分
{$unwind:{path:"$data",preserveNullAndEmptyArrays: true}},
#分页参数
{$limit:10},
{$skip:0},
])
mongodb聚合(aggregate)操作中的多表连接($lookup)使用方式记录
最新推荐文章于 2023-04-11 15:47:27 发布