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

如何将MongoDB文档中的主分类与子分类合并为一个数组?

MongoDB合并主分类与子分类为单个数组

当前文档结构

{
    "title": "main title",
    "subCategories": [
        {
           "title": "sub title 1"
        },
        {
           "title": "sub main title 2"
        },
        {
           "title": "sub main title 3"
        }
    ]
}

期望结果

[
    {
        "title": "main title"
    },
    {
       "title": "sub title 1"
    },
    {
       "title": "sub main title 2"
    },
    {
       "title": "sub main title 3"
    }
]

实现方法

通过MongoDB聚合管道即可完成,核心利用$concatArrays操作符将主分类包装为单元素数组后,与子分类数组合并。

方法1:返回包含合并数组的文档

执行以下聚合查询(替换yourCollectionName为实际集合名):

db.yourCollectionName.aggregate([
  {
    $project: {
      mergedCategories: {
        $concatArrays: [
          [ { title: "$title" } ], // 将主标题转为单元素数组
          "$subCategories"         // 拼接子分类数组
        ]
      },
      _id: 0 // 排除默认_id字段
    }
  }
])

查询结果会返回一个包含mergedCategories字段的文档,其值即为合并后的目标数组。

方法2:返回独立的分类文档列表

如果希望直接得到每个分类对象作为独立文档的形式(与期望结果结构一致),可在上述基础上增加两个聚合阶段:

db.yourCollectionName.aggregate([
  {
    $project: {
      mergedCategories: {
        $concatArrays: [
          [ { title: "$title" } ],
          "$subCategories"
        ]
      },
      _id: 0
    }
  },
  { $unwind: "$mergedCategories" }, // 将数组拆分为单个文档
  { $replaceRoot: { newRoot: "$mergedCategories" } } // 将分类对象作为文档根
])

执行后会返回4个独立文档,每个文档对应一个主分类或子分类的对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 20:55:21