You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB多文档聚合求助:单文档整合多文档数据失败

解决MongoDB多文档聚合到单文档的问题

我来帮你搞定这个多集合聚合的问题!你现在有三个集合:doc1存了关联ID,doc2是地址信息,doc3是社交链接信息,目标是把它们合并成一个完整的文档对吧?

实现思路

利用MongoDB的$lookup阶段做跨集合关联,通过doc1里的addressId和socialId分别匹配doc2和doc3的_id,再通过$unwind展开关联得到的数组,最后用$project整理成你需要的单文档结构。

具体聚合查询

db.doc1.aggregate([
  // 第一步:关联doc2,获取地址相关信息
  {
    $lookup: {
      from: "doc2",
      localField: "addressId",
      foreignField: "_id",
      as: "addressInfo"
    }
  },
  // 第二步:关联doc3,获取社交平台链接信息
  {
    $lookup: {
      from: "doc3",
      localField: "socialId",
      foreignField: "_id",
      as: "socialInfo"
    }
  },
  // 展开地址信息数组(每个关联仅返回一条数据,展开后直接提取文档)
  { $unwind: "$addressInfo" },
  // 展开社交信息数组
  { $unwind: "$socialInfo" },
  // 第三步:整理最终文档结构,去掉冗余字段
  {
    $project: {
      _id: 0,
      addressId: 1,
      socialId: 1,
      address: "$addressInfo.address",
      mob: "$addressInfo.mob",
      fbURLs: "$socialInfo.fbURLs",
      twitterURLs: "$socialInfo.twitterURLs"
    }
  }
])

执行结果

运行上述聚合命令后,你会得到整合后的单文档:

{
  "addressId" : ObjectId("5901a5f83541b7d5d3293768"),
  "socialId" : ObjectId("5901b0f6d318b072ceea44fb"),
  "address" : "Gurgaon",
  "mob" : "9876543211",
  "fbURLs" : "http://www.facebook.com",
  "twitterURLs" : "http://www.twitter.com"
}

内容的提问来源于stack exchange,提问作者Dave1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:27:56