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

Mongoose中findOneAndUpdate不返回最新数据的原因排查

问题原因及解决方法

原因:findOneAndUpdate方法默认返回更新前的原始文档,这是该方法的默认行为,所以即使数据库数据已成功更新,你拿到的post变量仍是修改前的旧数据。

解决方法:

  • 在findOneAndUpdate的第三个参数中添加new: true配置,让方法返回更新后的文档:
let post = await Post.findOneAndUpdate(
  {'name':'Existing Name'},
  {'name':'My New Name'},
  { new: true }
);
console.log(JSON.stringify(post,null,2));
  • 也可以使用等价的returnOriginal: false配置,效果和new: true完全一致:
let post = await Post.findOneAndUpdate(
  {'name':'Existing Name'},
  {'name':'My New Name'},
  { returnOriginal: false }
);

如果使用的是原生MongoDB驱动而非Mongoose,则需要指定returnDocument: 'after'选项来获取更新后的文档。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 20:57:32