如何让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
相关产品推荐
相关产品推荐

