使用Java Spring存储库更新MongoDB集合

时间:2015-10-13 02:34:17

标签: java repository spring-data mongodb-java

我在使用Java Spring Repositories(these ones)时遇到了一些问题。我有一个集合,它有一个自定义ID字段(因为我的应用程序中有一个限制,阻止我使用MongoDB ObjectID)和一些数据。看来,如果使用ObjectID保存,CrudRepository接口中内置的save()方法将仅对数据库对象进行更新,否则它将添加该对象的新实例。由于我使用的是自定义ID字段,这似乎意味着我必须首先删除旧对象(如果存在),然后插入带有更新字段的全新对象。显然这很慢(我必须做3个数据库调用:一个用于查看对象是否存在,一个用于删除它,一个用于插入它,而不是1个),所以我想确保:

有没有办法使用Java Spring存储库对集合进行更新而不使用对象的ObjectID?感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用MongoOperations api,

http://docs.spring.io/spring-data/data-mongo/docs/current/api/org/springframework/data/mongodb/core/MongoOperations.html#findAndModify-org.springframework.data.mongodb.core.query.Query-org.springframework.data.mongodb.core.query.Update-java.lang.Class-

只需在自定义mongo dao实现中自动装配mongoOperation,即可使用此代码

mongoOperation.findAndModify(Query query, Update update,Class<T> entityClass)

查询包含条件,更新包含您要应用的更改,entityClass与mongo文档相关。

您还可以按照本教程中的其他类似操作进行操作

http://www.mkyong.com/mongodb/spring-data-mongodb-update-document/