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

如何在MongoDB中合并同文档及跨文档数组,生成指定格式单文档?

实现方法:MongoDB聚合管道

要把多个文档中accel数组里的x和y值分别合并成两个大数组,最终生成单文档,用MongoDB的聚合管道就能轻松完成,核心用到$unwind和$group这两个阶段,具体步骤如下:

步骤拆解

  • 第一步:展开数组
    先用$unwind阶段把每个文档里的accel数组拆分成独立的文档条目。比如原本一个包含2个{x,y}对象的accel数组,会被拆成2个单独的文档,每个文档只保留一个{x,y}对象。

  • 第二步:聚合收集值
    接着用$group阶段,以null作为分组键(这样所有文档都会被聚合到同一组),然后通过$push操作符分别把所有文档里的x和y值收集到对应的数组中。

  • 可选:去除冗余字段
    如果不需要结果里的_id字段,可以加一个$project阶段把它排除掉。

完整聚合查询代码

db.yourCollection.aggregate([
  // 展开每个文档的accel数组
  { $unwind: "$accel" },
  // 聚合所有x、y值到对应数组
  {
    $group: {
      _id: null,
      x: { $push: "$accel.x" },
      y: { $push: "$accel.y" }
    }
  },
  // 可选:移除_id字段
  {
    $project: {
      _id: 0
    }
  }
])

效果说明

执行完这个聚合命令后,你会得到完全符合需求的单文档:

{ "x": [xv1, xv2, xv3, xv4], "y": [yv1, yv2, yv3, yv4] }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:26:04