在版本2我将三个步骤合到了一个脚本里 参见:link
1.首先join
代码:
db.collection_1.aggregate([
{ "$lookup": {
"localField": "startKeyNo",
"from": "collection_2",
"foreignField": "keyNo",
"as": "node"
} }
// , { "$unwind": "$node" }
,{ "$project": {
"_id": 0,
"id": 1,
"type": 1,
"startNode": 1,
"startKeyNo": 1,
"endKeyNo": 1,
"endNode": 1,
"role": 1,
"node":1
} }
// ,{$out:"enterprise_with_node_name"}
])
解释:
第二步:保留第一个join结果
第一步join的结果字段是一个Array类型的数据,如果想要做一个左外连接使用$unwind拆分即可,若是想仅保留第一个就不要拆分,先把第一步的结果使用$out输出到一个中间表中,再进行接下来的操作:
代码:
db.中间表.aggregate(
[
{$project : {
"_id": 0,
"id": 1,
"type": 1,
"startNode": 1,