Spring-Data MongoDB 更新所有文档字段。

3

我正在从SQL(JPA)迁移到MongoDB,并听说Spring-Data非常出色,所以我正在使用它,特别是用于DBObjects和应用程序对象之间的整个转换。

大多数需求都得到了满足,但我不知道如何将JPA的更新功能迁移到Spring-Data with MongoDB: 1. save/update是隐式的,由Hibernate处理 2. update根据给定的对象更新所有值

与JPA类似,当使用com.mongodb.DB时,您可以执行一行“Update”操作:

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中那样使用此功能的方法?


你看过MongoOperations#save方法了吗?我认为它可以解决你的问题。 - Miguel Cartagena
谢谢@MiguelCartagena,那是其中的一部分,我正在做TrevorGowing在答案中写的更多或更少的事情。 - Ido Cohn
1个回答

1
我不确定我是否完全理解了你的问题,但似乎你正在尝试使用Spring-Data将Hibernate中的SQL数据库数据迁移到MongoDB中。我们最近也使用Spring-Data将应用程序中的所有二进制数据从Apache Jackrabbit迁移到了MongoDB。此外,我们还有一个实例仍在将一些二进制数据存储在SQL数据库中,这些数据也被迁移了。我们以以下方式迁移了这些数据:
1. 从Hibernate中检索所需的所有实体。 2. 创建MongoDB文档的新实例。 3. 循环遍历所有这些实体,将数据从Hibernate实体复制到MongoDB文档中。 4. 对于每个文档,调用 MongoOperations#save()
你还提到了一些关于更新的内容。

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

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


@IdoCohn 很高兴我能帮到你。 - Trevor Gowing

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接