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

如何用MongoDB聚合反转对象关系:按语言分组关联国家

按语言分组的MongoDB聚合实现

完全可以通过MongoDB的聚合管道实现这个需求,核心用到$unwind和$group两个阶段:

聚合查询代码

db.countries.aggregate([
  // 将每个国家的语言数组拆分为单独文档
  { $unwind: "$languages" },
  // 按语言分组,收集对应的国家名称数组
  {
    $group: {
      _id: "$languages",
      countries: { $push: "$name" }
    }
  },
  // 调整输出字段命名,匹配预期格式
  {
    $project: {
      _id: 0,
      language: "$_id",
      countries: 1
    }
  }
])

代码说明

  • $unwind:把每个国家的languages数组拆分成多条独立文档,比如瑞士(CH)会被拆成4条分别对应de、fr、it、rm的文档。
  • $group:以语言为分组依据,用$push将同语言的国家名称收集到countries数组中。
  • $project:将默认的_id字段重命名为language并隐藏原_id,让输出结构完全匹配你想要的格式。

执行结果

运行上述聚合后,会得到如下结果:

[
  { language: "de", countries: ["CH","DE","AT"] },
  { language: "fr", countries: ["CH","FR"] },
  { language: "it", countries: ["CH"] },
  { language: "rm", countries: ["CH"] }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:03:19