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

MongoDB聚合管道:如何提取合并内部邮编数组生成视图

解决方案

你可以通过以下聚合管道实现需求,核心用到$unwind和$group操作,同时保留原数据的顺序:

聚合管道步骤

  1. $unwind:将每个州文档中的data.zip_codes数组拆分为单个文档,每个文档对应一个邮编条目,这一步会保留原数组内的顺序。
  2. $group:将所有拆分后的邮编文档收集到一个数组中,$push操作会按照原文档的处理顺序(即州的顺序)和每个州内邮编的顺序来组合元素。
  3. $project:重新格式化输出结构,只保留包含所有邮编的zip_codes字段。

完整聚合代码

db.your_collection_name.aggregate([
  // 展开每个州的邮编数组
  { $unwind: "$data.zip_codes" },
  // 将所有邮编条目收集到一个数组
  {
    $group: {
      _id: null, // 按null分组,把所有文档归为一组
      zip_codes: { $push: "$data.zip_codes" }
    }
  },
  // 只保留zip_codes字段,去掉默认的_id
  { $project: { _id: 0, zip_codes: 1 } }
])

创建视图的命令

如果要将这个结果创建为持久化视图,可以用createView命令:

db.createView(
  "zip_codes_view", // 视图名称
  "your_collection_name", // 源集合名称
  [
    { $unwind: "$data.zip_codes" },
    {
      $group: {
        _id: null,
        zip_codes: { $push: "$data.zip_codes" }
      }
    },
    { $project: { _id: 0, zip_codes: 1 } }
  ]
)

关键说明

  • $unwind拆分数组后,每个邮编条目成为独立文档,为后续合并做准备。
  • $group的_id: null确保所有文档被合并为一组,$push严格遵循文档流入的顺序,完美匹配你要求的原数据顺序。
  • 最终的$project移除冗余的_id字段,输出结构完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 23:14:56