查询语句
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 不能跨库联合