繁体   English   中英

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

[英]Spring-Data MongoDB Update all document fields

我正在从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中的功能?

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

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

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

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

您还提到了有关更新的内容:

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

或者你可以使用MongoOperatons#findOne()查找你想要的对象,然后更新你想要的字段,然后调用MongoOperations#save() ,如果你读了javadoc,你会看到执行upsert。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM