我正在从SQL(JPA)迁移到MongoDB,我听说Spring-Data很棒,所以我正在使用它,特别是对于DBObjects和应用程序对象之间的整个转换。
我的大多数要求都得到满足,但我不知道如何使用MongoDB将JPA的更新功能迁移到Spring-Data: 1.保存/更新是隐式的,由hibernate处理 2.更新根据给定对象更新所有值
与JPA类似,使用com.mongodb.DB时,您可以执行单行“更新”操作:
public boolean update(String collectionName, DBObject referenceObject, DBObject object) {
WriteResult result = this.db.getCollection(collectionName).update(referenceObject, object);
return parseWriteResult(result);
}
根据给定对象中的值保存/更新等于引用对象的对象,具体取决于对象是否在DB中。
现在我正在使用MongoOperations,我只能使用“Update”对象更新对象,我必须一次为一个值播种:
MongoOperations client = ...
...
Update update = new Update();
update.set("past", 1);
update.set("current", 3);
...
client.updateFirst(query, update, clazz);
有没有办法使用JPA中的功能?
答案 0 :(得分:1)
我不确定我是否100%理解您的问题,但您似乎尝试使用Spring-Data将数据从使用Hibernate的SQL数据库迁移到MongoDB。
我们最近使用Spring-Data将我们应用程序中的所有二进制数据从Apache Jackrabbit迁移到MongoDB。此外,还有一个实例,我们仍然在我们的SQL数据库中存储了一些二进制数据,这些数据库也已迁移:
我们按以下方式迁移了这些数据:
您还提到了有关更新的内容:
要更新特定文档,只需使用MongoOperations#updateFirst()。
或者您可以使用MongoOperatons#findOne()查找所需的对象,然后更新所需的字段,然后调用MongoOperations#save(),如果您阅读了javadoc,则会看到执行upsert。