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

MongoDB如何将集合中文档的数组转换为对象数组

将集合文档中的数组转换为对象数组

场景1:直接更新数据库中的文档(以MongoDB为例)

如果需要永久修改集合里的文档结构,用updateMany配合聚合管道实现批量转换:

db.collection.updateMany(
  {}, // 匹配所有文档,如需指定条件可修改此参数
  [
    {
      $set: {
        data: {
          $map: {
            input: "$ids",
            as: "id",
            in: { 
              id: "$$id",
              // 可添加其他默认属性,例如:
              // status: "pending",
              // createdAt: new Date()
            }
          }
        }
      }
    },
    { $unset: "ids" } // 可选:删除原有的ids字段
  ]
)
  • $map会遍历ids数组的每个元素,把单个ID值转换成包含id键的对象;
  • 按需添加其他默认字段到in对象中即可;
  • $unset用于清理原ids字段,不需要的话可以去掉这一步。

场景2:查询时临时转换(不修改原文档)

如果不想改动数据库里的原始数据,仅在查询结果中转换结构,用聚合查询:

db.collection.aggregate([
  {
    $project: {
      data: {
        $map: {
          input: "$ids",
          as: "id",
          in: { id: "$$id" }
        }
      },
      // 保留需要的其他字段,例如:
      // _id: 1,
      // title: 1
    }
  }
])

客户端侧转换(以JavaScript为例)

如果数据已经拿到客户端,直接用数组方法转换:

// 假设docs是从数据库获取的文档数组
const transformedDocs = docs.map(doc => ({
  ...doc,
  data: doc.ids.map(id => ({
    id,
    // 可自定义添加字段,例如:
    // updatedAt: new Date()
  })),
  ids: undefined // 删除原ids字段,不需要可省略
}));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 23:27:07