mongo 联表查询

查询语句

db.getCollection("A表").aggregate([
{
$lookup:{
from:"B表",
localField:"A_id",
foreignField:"B_id",
as:"B_list"
}
},
{
$match:{ A_id:{$eq:100000} }
},
{
$project:{"A_id":1,"B_list":{"B_id":1 }}
}
])

查询结果

{
"A_id" : NumberInt(100000),
"B_list" :
{
"B_id" : NumberInt(100000)
}
}

-----------------------------------------------------

$lookup 参数说明

from 需要关联的表名(B表)
localField A表 需要关联的键
foreignField B表需要关联的键
as B表的数据取个别名


$match 查询条件 相当于where的作用

A_id:{$eq:100000} 意思是 A_id=100000


$project 决定要显示的字段 相当于select 的作用
"A_id":1 显示 A_id字段
"A_id":0 不显示 A_id字段

提醒:显示或不显示,需要统一设置,不能交叉使用。
比如: $project:{"A_id":1,"B_list":{"B_id":0 }} 就会报错

------------------------------------
特别注意:
1 只能两个表联合查询
2 不能跨库联合

原文地址:https://www.cnblogs.com/xiaonanmu/p/10558931.html