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

如何通过MongoDB查询/聚合将文档格式化为指定对象数组?

MongoDB聚合转换文档结构问题

原始集合文档格式

{
  "_id": "657c54befca2b6a2cdd935ba",
  "data": {
    "name": "Bob",
    "surname": "xxx",
    "age": "20"
  },
  "header": {
    "data": "1702646974156"
  },
  "_class": "Prova"
}
{
  "_id": "657c54befca2b6a2cdd935bb",
  "data": {
    "name": "Tom",
    "surname": "yyy",
    "age": "25"
  },
  "header": {
    "data": "1702646974156"
  },
  "_class": "Prova"
}

目标转换结构

{
  "data": [
    {
      "member": {
          "name": "Bob",
          "surname": "xxx"
      }
    },
    {
      "member": {
          "name": "Tom",
          "surname": "yyy"
      }
    }
  ]
}

解决方案:聚合操作实现转换

完全可以通过MongoDB的聚合管道完成这个结构转换,具体命令如下:

db.yourCollectionName.aggregate([
  // 提取所需字段,构造member结构
  {
    $project: {
      _id: 0,
      member: {
        name: "$data.name",
        surname: "$data.surname"
      }
    }
  },
  // 将所有文档聚合到data数组中
  {
    $group: {
      _id: null,
      data: { $push: "$$ROOT" }
    }
  },
  // 移除自动生成的_id字段
  {
    $project: {
      _id: 0
    }
  }
])

步骤说明:

  • $project:过滤掉_id、header、_class等无关字段,从data中提取name和surname,构造出member对象。
  • $group:以null为分组键,用$push把所有处理后的文档收集到data数组里。
  • $project:最后移除分组产生的_id,得到目标结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 16:42:17