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

MongoDB聚合中按索引合并两个数组的高效实现方案求助

高效合并MongoDB中对应索引的数组对象

针对你需要按索引合并两个数组对应位置对象的需求,推荐使用$zip结合$map的聚合方案,比group阶段的实现效率高很多,具体实现如下:

聚合管道示例

假设你的文档结构包含array1和array2字段,可通过以下$project阶段直接生成目标数组array3:

{
  $project: {
    array3: {
      $map: {
        input: { $zip: { inputs: ["$array1", "$array2"] } },
        as: "pair",
        in: { $mergeObjects: ["$$pair.0", "$$pair.1"] }
      }
    }
  }
}

方案说明

  1. $zip运算符:将两个数组按索引位置配对,生成一个包含对应元素对的新数组,比如array1的第i个元素和array2的第i个元素会被组合成[array1[i], array2[i]]。
  2. $map运算符:遍历$zip生成的元素对数组,对每一对使用$mergeObjects合并两个对象,得到包含item和price的目标对象。
  3. 性能优势:整个操作在单个$project阶段完成,无需分组操作,避免了group阶段带来的内存占用和性能损耗,处理大数据量时效率远高于group实现。

注意事项

  • 如果两个数组长度不一致,$zip默认会截断到较短数组的长度;若需要保留所有元素,可添加useLongestLength: true参数,此时长度不足的数组会用null填充对应位置,你可以根据需求在$mergeObjects中处理null情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:31:01