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

JS中如何扁平化MongoDB返回的JSON数组并移除_id字段?

高效扁平化MongoDB返回的嵌套JSON数组方案

如果想要高效处理这类嵌套结构,优先推荐在MongoDB查询阶段直接转换格式,避免客户端额外处理;如果必须在客户端处理,Lodash或原生JS的内置方法都能实现高效转换。

1. 数据库端直接处理(最优方案)

在聚合查询阶段用$project直接提取嵌套字段并移除_id,数据库返回的结果就是目标结构,减少数据传输和客户端计算:

db.collection.aggregate([
  {
    $project: {
      fx_capacity_category: "$_id.fx_capacity_category",
      fx_capacity: 1,
      _id: 0 // 移除原始_id字段
    }
  }
])

2. Lodash客户端实现

用_.map配合对象展开或_.assign,简洁且高效:

// 方式1:对象展开运算符
const flattened = _.map(originalArray, item => ({
  ...item._id,
  fx_capacity: item.fx_capacity
}));

// 方式2:Lodash的assign方法
const flattened = _.map(originalArray, item => 
  _.assign({}, item._id, { fx_capacity: item.fx_capacity })
);

Lodash的_.map内部做了性能优化,比手动for循环更稳定可靠。

3. 原生JS高效实现

原生Array.map是引擎优化的内置方法,性能不输手动遍历,写法更简洁:

// 方式1:直接解构字段
const flattened = originalArray.map(item => ({
  fx_capacity_category: item._id.fx_capacity_category,
  fx_capacity: item.fx_capacity
}));

// 方式2:对象展开运算符
const flattened = originalArray.map(item => ({
  ...item._id,
  fx_capacity: item.fx_capacity
}));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 19:02:43