3

我正在从 SQL (JPA) 迁移到 MongoDB,听说 Spring-Data 很棒,所以我正在使用它,尤其是用于 DBObjects 和应用程序对象之间的整个转换。

我的大部分要求都得到了满足,但我不知道如何使用 MongoDB 将 JPA 的更新功能迁移到 Spring-Data: 1. 保存/更新是隐式的,由休眠处理 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);
}

它根据给定对象中的值以及对象是否在数据库中来保存/更新等于引用对象的对象。

现在我正在使用 MongoOperations,我只能使用“更新”对象更新对象,我必须一次播种一个值:

MongoOperations client = ...

...

Update update = new Update();
update.set("past", 1);
update.set("current", 3);

...

client.updateFirst(query, update, clazz);

有什么方法可以使用 JPA 中的功能吗?

4

1 回答 1

1

我不确定我是否 100% 理解您的问题,但您似乎正在尝试使用 Hibernate 将数据从 SQL 数据库迁移到使用 Spring-Data 的 MongoDB 中。

我们最近也使用 Spring-Data 将应用程序中的所有二进制数据从 Apache Jackrabbit 迁移到了 MongoDB。此外,还有一个例子,我们仍然在我们的 SQL 数据库中存储一些二进制数据,这些数据也被迁移了:

我们通过以下方式迁移了这些数据:

  • 从休眠中检索所需的所有实体。
  • 创建 MongoDB 文档的新实例。
  • 遍历所有这些实体,将数据从休眠实体复制到 MongoDB 文档中。
  • 为每个文档调用MongoOperations#save() 。

你还提到了一些关于更新的事情:

要更新特定文档,只需使用MongoOperations#updateFirst()

或者,您也可以使用MongoOperatons#findOne()查找所需的对象,然后更新所需的字段,然后调用MongoOperations#save()如果您阅读 javadoc,您将看到执行 upsert。

于 2013-07-22T06:13:32.257 回答