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

MongoDB中为数组内每个对象新增字段的方法

解决方案:为MongoDB数组内所有对象新增字段

MongoDB 3.2+ 版本(推荐)

使用MongoDB的数组通配符操作符$[],可以一次性更新数组中的所有元素,无需关心数组长度。执行以下命令:

// 替换your_collection为你的集合名称
db.your_collection.updateMany(
  {}, // 匹配集合中所有文档
  { $set: { "Products.$[].Temp": "Hello" } } // 为Products数组的每个元素新增Temp字段
)

补充说明:

  • updateMany() 会批量作用于所有符合条件的文档,这里{}表示匹配全部文档
  • "Products.$[].Temp" 中的$[]代表数组内的每一个元素,$set会为每个元素添加Temp字段并赋值为"Hello"
  • 如果数组中已有元素存在Temp字段,上述操作会覆盖原有值。若要避免覆盖,可使用MongoDB 3.6+支持的数组过滤器:
db.your_collection.updateMany(
  {},
  { $set: { "Products.$[elem].Temp": "Hello" } },
  { arrayFilters: [ { "elem.Temp": { $exists: false } } ] }
)

低版本MongoDB(3.0及以下)

如果你的MongoDB版本低于3.2,无法使用$[]语法,可通过遍历文档和数组的方式实现:

db.your_collection.find().forEach(function(doc) {
  // 遍历当前文档的Products数组
  doc.Products.forEach(function(product) {
    product.Temp = "Hello";
  });
  // 保存更新后的文档
  db.your_collection.save(doc);
});

效果示例

假设原文档结构如下:

{
  "_id": ObjectId("123"),
  "Products": [
    { "name": "Product A", "price": 100 },
    { "name": "Product B", "price": 200 }
  ]
}

执行更新命令后,文档会变为:

{
  "_id": ObjectId("123"),
  "Products": [
    { "name": "Product A", "price": 100, "Temp": "Hello" },
    { "name": "Product B", "price": 200, "Temp": "Hello" }
  ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 00:25:54