如何使用 MongoRepository 接口更新 mongo db 中的特定字段?
Posted
技术标签:
【中文标题】如何使用 MongoRepository 接口更新 mongo db 中的特定字段?【英文标题】:How to update particular field in mongo db by using MongoRepository Interface? 【发布时间】:2016-12-22 17:31:26 【问题描述】:春季如何使用 MongoRepository 接口更新 mongo db 集合中的特定字段?
【问题讨论】:
除了 MongoRepository 你还知道其他存储库吗? 简短的回答是否定的 你得到解决方案了吗? 【参考方案1】:从今天开始,您无法通过一个查询使用MongoRepository
更新文档。如果您真的想使用MongoRepository
更新特定字段,那么以下是步骤:
-
获取要更新的文档
为特定字段设置新值并保存该文档。
例子:
MyDocument myDocumentToUpdate = myDocumentRepository.findById(documentId); // fetching a document that you want to update the field
myDocumentToUpdate.setMyField(myNewValue); // setting the new value to the field myField
myDocumentRepository.save(myDocumentToUpdate); // saving (It basically updates the document) the updated document
【讨论】:
这似乎具有覆盖整个文档的效果,而不仅仅是更新单个字段的值。 是的。在内部,它不会更改特定字段,但作为用户,它似乎会这样做。【参考方案2】:我相信你现在已经得到了答案,还在更新它以帮助其他人。
您可以通过以下代码更新特定字段。,
Query query1 = new Query(Criteria.where("id").is("123"));
Update update1 = new Update();
update1.set("available", false);
mongoTemplate.updateFirst(query1, update1, Customer.class);
【讨论】:
这个方法使用的是MongoOperation,而不是MongoRepository以上是关于如何使用 MongoRepository 接口更新 mongo db 中的特定字段?的主要内容,如果未能解决你的问题,请参考以下文章
Spring MongoRepository 正在更新或更新插入而不是插入
使用 Spring Data MongoRepository 进行更新查询的自定义方法
参考MongoRepository,为接口生成bean实现注入