MongoDB 使用aggregate做join连接 并保留第一个join结果(一)

本文介绍了如何使用MongoDB的aggregate方法进行join操作,并详细讲解了如何保留第一个join结果。通过三个步骤,包括join、保留第一个结果和拆分字段,实现了类似左外连接的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在版本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,
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值