我在使用Java Spring Repositories(these ones)时遇到了一些问题。我有一个集合,它有一个自定义ID字段(因为我的应用程序中有一个限制,阻止我使用MongoDB ObjectID)和一些数据。看来,如果使用ObjectID保存,CrudRepository接口中内置的save()方法将仅对数据库对象进行更新,否则它将添加该对象的新实例。由于我使用的是自定义ID字段,这似乎意味着我必须首先删除旧对象(如果存在),然后插入带有更新字段的全新对象。显然这很慢(我必须做3个数据库调用:一个用于查看对象是否存在,一个用于删除它,一个用于插入它,而不是1个),所以我想确保:
有没有办法使用Java Spring存储库对集合进行更新而不使用对象的ObjectID?感谢。
答案 0 :(得分:1)
您可以使用MongoOperations api,
只需在自定义mongo dao实现中自动装配mongoOperation,即可使用此代码
mongoOperation.findAndModify(Query query, Update update,Class<T> entityClass)
查询包含条件,更新包含您要应用的更改,entityClass与mongo文档相关。
您还可以按照本教程中的其他类似操作进行操作
http://www.mkyong.com/mongodb/spring-data-mongodb-update-document/