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

MongoDB中将嵌套数组合并为一维数组的实现方法

二维数组扁平化解决方案

针对你提供的嵌套数组结构,以下是几种主流编程语言的实现方式,可将每个对象中的immunizationDetails二维数组转换为一维数组:

JavaScript 实现

利用数组原生的flat()方法快速扁平化数组,搭配map()遍历原数组即可完成转换:

const originalData = [
  {
    "immunizationDetails": [
      ["Rubella"],
      ["PCV13", "Tdap"]
    ]
  },
  {
    "immunizationDetails": [
      ["Hepatitis B", "HIB"],
      ["PCV13"]
    ]
  }
];

const transformedData = originalData.map(item => ({
  ...item,
  immunizationDetails: item.immunizationDetails.flat()
}));

console.log(transformedData);

flat()默认扁平化一层嵌套,刚好匹配你的需求;若存在更深层级嵌套,可传入参数(如flat(Infinity))处理任意深度的嵌套数组。

Python 实现

可通过列表推导式或itertools.chain实现数组扁平化:

方式一:列表推导式

original_data = [
    {
        "immunizationDetails": [
            ["Rubella"],
            ["PCV13", "Tdap"]
        ]
    },
    {
        "immunizationDetails": [
            ["Hepatitis B", "HIB"],
            ["PCV13"]
        ]
    }
]

transformed_data = [
    {
        **item,
        "immunizationDetails": [vaccine for sublist in item["immunizationDetails"] for vaccine in sublist]
    }
    for item in original_data
]

print(transformed_data)

方式二:使用itertools.chain

import itertools

original_data = [
    {
        "immunizationDetails": [
            ["Rubella"],
            ["PCV13", "Tdap"]
        ]
    },
    {
        "immunizationDetails": [
            ["Hepatitis B", "HIB"],
            ["PCV13"]
        ]
    }
]

transformed_data = [
    {
        **item,
        "immunizationDetails": list(itertools.chain.from_iterable(item["immunizationDetails"]))
    }
    for item in original_data
]

print(transformed_data)

两种方式均可将二维数组展开为一维,itertools.chain在处理大规模数据时性能更优。

内容的提问来源于stack exchange,提问作者Code The World

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 22:45:29