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

如何在MongoDB中更新文档内嵌数组内所有对象的price字段值

解决方案

你可以使用MongoDB提供的全数组 positional 操作符 $[] 实现需求,该操作符支持MongoDB 3.6及以上版本,会匹配数组中的所有元素进行更新。

单个目标文档更新(按示例中的_id匹配)

db.yourCollectionName.updateOne(
  { "_id": ObjectId("123456789") },
  { $set: { "items.$[].price": 50 } }
)

批量更新所有符合条件的文档

如果你需要更新集合中所有文档的items数组内的price字段,使用updateMany:

db.yourCollectionName.updateMany(
  {},
  { $set: { "items.$[].price": 50 } }
)

低版本兼容方案(MongoDB 3.6以下)

如果使用的是不支持$[]的旧版本,可以先查询出目标文档,遍历修改items数组后再保存:

const targetDoc = db.yourCollectionName.findOne({ "_id": ObjectId("123456789") })
targetDoc.items.forEach(item => item.price = 50)
db.yourCollectionName.save(targetDoc)

注意该方法是读改写的非原子操作,高并发场景下可能存在数据不一致问题,建议优先升级MongoDB版本使用$[]方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:15:01