需要使用$lookup,pipeline
主表连接子表,主表.tid = 子表.tid 且 主表keyId = 子表.父keyId
m_table m join sub_table s on m.tid = s.tid and m.my_key_id = s.parent_key_id
db.getCollection("m_table").aggregate([
{
$lookup: {
from: "sub_table",
// localField: "tid",
// foreignField: "tid",
let: {
sub_parent_id: "$node.parent_key_id",
sub_tid: "$tid"
},
pipeline: [{
$match: {
$expr: {
$and: [
{
$eq: ["$$sub_tid", "$tid"]
},
{
$eq: ["$$sub_parent_id", "$node.my_key_id"]
}
]
}
}
}],
as: "subTable"
}
},
{
$match: {
tid: 20,
"node.my_key_id": 45
}
},
{
$project: {
tid: 1,
"lKey": "$subTable.lkey_name",
"rKey": "$subTable.rkey_name"
}
}
])
官网说明