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

如何不使用for循环合并JavaScript数组,处理mongoose返回的嵌套数组结果

实现方案

你可以选择应用层快速处理,或者直接在Mongoose查询阶段聚合得到目标结果,两种方法都不需要手写显式循环:

方案1:应用层处理(无需修改查询逻辑)

使用JS内置的flatMap方法(ES2019及以上支持),该方法底层做了性能优化,远快于手动写forEach循环:

// 假设mongoose查询返回的结果存在res变量中
const targetArr = res.store.flatMap(item => item.items)

如果运行环境不支持flatMap,可以用reduce替代:

const targetArr = res.store.reduce((acc, curr) => acc.concat(curr.items), [])

方案2:Mongoose聚合查询(更适合大数据量场景)

直接在查询阶段通过聚合管道得到目标数组,无需后续应用层处理,性能更高:

YourModel.aggregate([
  // 拆分store数组为单条文档
  { $unwind: "$store" },
  // 拆分每个store下的items数组为单条文档
  { $unwind: "$store.items" },
  // 把所有items值聚合为一个数组
  { $group: { _id: null, result: { $push: "$store.items" } } },
  // 移除不需要的_id字段
  { $project: { _id: 0 } }
])

查询返回的结果中result字段就是你需要的目标数组。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:54:02