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

MongoDB聚合查询:关联用户与店铺集合并生成店铺对象数组

MongoDB关联User与Store集合,将store_ids转换为带name的店铺数组

要实现将User集合中store_ids数组关联到Store集合并返回对应店铺名称的需求,核心是使用MongoDB聚合框架的$lookup操作(MongoDB 3.2及以上版本支持)。之前单独用$map或$set无法实现,是因为这两个操作只能处理当前集合内的字段,没法直接访问另一个集合的数据。

完整聚合查询代码

db.User.aggregate([
  // 第一步:关联Store集合,根据store_ids匹配店铺的_id
  {
    $lookup: {
      from: "Store",       // 要关联的目标集合名
      localField: "store_ids",  // User集合中用于关联的字段(数组)
      foreignField: "_id", // Store集合中匹配的字段
      as: "stores"         // 关联结果存储的字段名
    }
  },
  // 第二步:筛选stores数组中需要的字段(只保留_id和name)
  {
    $project: {
      _id: 1,
      stores: {
        $map: {
          input: "$stores",
          as: "store",
          in: {
            _id: "$$store._id",
            name: "$$store.name"
          }
        }
      }
    }
  }
])

代码说明

  1. $lookup阶段:自动遍历User集合中每个文档的store_ids数组,匹配Store集合中_id对应的文档,把匹配到的所有店铺文档存入stores字段。
  2. $project阶段:用$map遍历stores数组,只保留每个店铺文档的_id和name字段,输出你期望的结果结构。

注意事项

你期望的结果中第二个店铺的键是id,这应该是笔误,上述代码返回的是标准的_id键,和MongoDB文档结构保持一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 17:25:28