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

如何通过MongoDB聚合查询实现多行文档转单行?

MongoDB聚合实现文档合并方案

针对你的需求,我们可以通过**$group和$project**两个聚合阶段完成文档合并与结构重构,具体聚合查询如下:

db.yourCollectionName.aggregate([
  // 按Field1分组,提取对应文档的目标字段
  {
    $group: {
      _id: "$Field1",
      targetId: { $first: { $cond: [{ $eq: ["$_id", 1] }, "$_id", null] } },
      targetField2: { $first: { $cond: [{ $eq: ["$_id", 1] }, "$Field2", null] } },
      targetField3: { $first: { $cond: [{ $eq: ["$_id", 2] }, "$Field2", null] } }
    }
  },
  // 重构输出文档的结构
  {
    $project: {
      _id: "$targetId",
      Field1: "$_id",
      Field2: "$targetField2",
      Field3: "$targetField3"
    }
  }
])

逻辑说明:

  1. $group阶段:

    • 以Field1作为分组键,将两个Field1值为Visit1的文档归为同一组
    • 使用$cond条件判断,分别提取_id=1文档的_id和Field2,以及_id=2文档的Field2(作为最终的Field3)
    • $first用于确保只取到符合条件的第一个值(分组内仅两个文档,不会有冲突)
  2. $project阶段:

    • 重新映射字段,将分组得到的临时字段转换为你期望的输出结构,最终得到目标文档

注意:请将查询中的yourCollectionName替换为你的实际集合名称;另外第一个原始文档中的Field1: Visit1缺少引号,假设是输入笔误,实际应为字符串类型"Visit1"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 19:31:07