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

如何基于相同字段值连接MongoDB中的两个集合?

MongoDB 基于手机号关联两个集合的查询方法

你可以使用MongoDB聚合框架中的$lookup操作关联users与users_info集合,配合$match筛选指定手机号,最终整合出目标结构的结果。以下是具体实现:

完整查询语句

db.users.aggregate([
  // 筛选出目标手机号的用户数据
  {
    $match: {
      phone_number: "+9600000000000" // 替换为你要搜索的特定号码
    }
  },
  // 关联users_info集合,匹配相同手机号的记录
  {
    $lookup: {
      from: "users_info",
      localField: "phone_number",
      foreignField: "phone_number",
      as: "user_extra_info"
    }
  },
  // 将关联返回的数组展开为单个对象(因单手机号对应单条记录)
  {
    $unwind: "$user_extra_info"
  },
  // 合并原文档与关联文档的字段
  {
    $replaceRoot: {
      newRoot: {
        $mergeObjects: ["$$ROOT", "$user_extra_info"]
      }
    }
  },
  // 移除临时生成的关联字段
  {
    $project: {
      user_extra_info: 0
    }
  }
])

返回结果示例

执行上述查询后,会得到你期望的结构:

{
  "user_id": "1234",
  "phone_number": "+9600000000000",
  "name": "John Smith",
  "age": "45",
  "address": "DC"
}

关键步骤说明

  • $match:精准定位目标手机号的用户记录,减少后续关联的数据量
  • $lookup:建立两个集合的关联关系,通过phone_number字段匹配
  • $unwind:将$lookup返回的数组结果展开为单个对象,方便字段合并
  • $replaceRoot+$mergeObjects:把原用户数据和关联的附加信息合并为一个文档
  • $project:清理临时生成的关联字段,让结果结构更简洁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 20:35:16