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

如何让MongoTemplate的findAndModify方法返回修改后的新值

解决MongoTemplate findAndModify返回更新前数据的问题

mongoTemplate 提供的findAndModify方法默认行为是返回更新操作执行前的文档数据,要直接获取更新后的结果,只需新增FindAndModifyOptions配置指定返回新文档即可。

修改步骤:

  • 构造FindAndModifyOptions实例,调用returnNew(true)开启返回更新后文档的配置
  • 将构造好的配置作为第四个参数传入findAndModify方法

修改后代码示例:

import org.springframework.data.mongodb.core.query.FindAndModifyOptions;

public MyEntity update(MyDto dto) {
    // 原有query、update构造逻辑保持不变
    ...
    // 新增返回新文档配置
    FindAndModifyOptions options = FindAndModifyOptions.options()
            .returnNew(true);
    // 调用重载的findAndModify方法,传入options参数
    MyEntity result = mongoTemplate.findAndModify(
        query, update, options, MyEntity.class);

    return result;
}

可选扩展配置:

如果需要满足条件的文档不存在时自动插入新文档,可以在配置中追加.upsert(true):

FindAndModifyOptions options = FindAndModifyOptions.options()
        .returnNew(true)
        .upsert(true);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:54:02