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

MongoDB聚合查询:基于test_id匹配向数组对象添加字段

MongoDB聚合查询:为数组内对象添加test_id字段

最优实现写法(MongoDB 3.6+)

假设你的集合名为test_collection,目标数组字段为target_array,需要匹配的test_id值为"your-target-id",聚合查询如下:

db.test_collection.aggregate([
  // 先过滤匹配test_id的文档,减少后续处理开销
  { $match: { test_id: "your-target-id" } },
  // 为数组内每个对象添加test_id字段
  {
    $addFields: {
      target_array: {
        $map: {
          input: "$target_array",
          as: "obj",
          in: { $mergeObjects: [ "$$obj", { test_id: "$test_id" } ] }
        }
      }
    }
  }
])

关键步骤说明

  • $match阶段:优先筛选符合条件的文档,避免对无关数据做处理,提升聚合效率。
  • $addFields阶段:保留文档原有所有字段,仅更新指定的数组字段,无需手动列出其他字段。
  • $map + $mergeObjects:遍历数组中的每个对象,将原对象与包含test_id的新对象合并,既保留原对象的所有属性,又新增test_id字段。

特殊场景处理

  • 如果数组字段可能不存在或为空,$map会直接返回原状态(空数组或不存在该字段),不会抛出异常。
  • 若需匹配多个test_id值,可将$match条件改为{ test_id: { $in: ["id1", "id2"] } }。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:45:31