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

使用Mongoose在NodeJS中更新文档时出现modifiedCount:0的原因

Mongoose 更新文档未生效的原因及解决办法

从返回的日志可以看到,matchedCount: 1说明已经匹配到了目标文档,但modifiedCount: 0表示没有任何字段被修改,常见原因及解决方式如下:

  • 更新的字段值与原文档完全一致
    Mongoose会跳过无意义的更新操作,如果key和verify_token的取值和数据库中对应文档的emailKey、verificationToken字段值完全相同,就会出现这种情况。建议在执行更新前打印这两个变量的值,对比数据库中的现有数据。

  • update()方法不支持new参数
    你使用的User.update()方法返回的是操作统计结果,而非更新后的文档,new参数是findOneAndUpdate()方法的配置项,在这里不会生效。如果需要获取更新后的文档,建议改用findOneAndUpdate()。

  • 模型未定义目标字段
    检查你的User Mongoose模型,确认是否已经声明了emailKey和verificationToken这两个字段。如果模型中没有定义这些字段,Mongoose会自动忽略这些更新操作,不会将数据写入数据库。

修改后的示例代码

User.findOneAndUpdate(
  { email: email },
  {
    $set: {
      emailKey: key,
      verificationToken: verify_token,
    },
  },
  { upsert: true, new: true },
  function (err, updatedUser) {
    if (err) {
      console.log(err);
    } else {
      console.log(updatedUser);
      console.log("updated!!!!!");
    }
  }
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:15:43