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

MongoDB如何更新数组内的指定字段值?

解决方案

你不需要使用$set,应该直接用$inc操作符结合MongoDB的数组定位符来实现需求,同时要修改查询条件确保定位到正确的选项。

正确代码

const {id, option} = req.body;

const db = await getMongoDb();

await db.collection('polls').updateOne(
  {
    _id: id,
    "options.option": option // 新增条件,定位到包含目标选项的文档
  },
  {
    $inc: {
      "options.$.vote": 1 // $是数组定位符,匹配第一个符合条件的数组元素
    },
  },
);

说明

  • "options.$.vote" 中的$是MongoDB的数组定位符,它会自动匹配查询条件里"options.option": option对应的数组元素
  • 查询条件中添加"options.option": option,既能确保只更新包含目标选项的投票文档,也能让数组定位符$正确找到要更新的元素
  • 使用$inc而不是$set,可以原子性地对vote字段进行加1操作,避免并发更新时的冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 04:55:42