【问题标题】:Is there any way to update/replace whole document of mongoDB from java using mongoDB morphia?有没有办法使用 mongoDB morphia 从 java 更新/替换整个 mongoDB 文档?
【发布时间】:2017-09-01 06:35:39
【问题描述】:

我需要从java中替换整个现有的mongodb文档而不是设置每个字段。有什么办法吗?我正在使用 mongo morphia。

现在我正在一一设置字段,以下是代码:

DBObject searchObject =new BasicDBObject();

searchObject.put("procId", procId);

final UpdateOperations<Timesheet> updateOperations = ds.createUpdateOperations(Timesheet.class)

.set("wheelInTime", timesheet.getWheelInTime())

.set("wheelOutTime", timesheet.getWheelOutTime())

.set("tableOnTime", timesheet.getTableOnTime())

.set("tableOffTime", timesheet.getTableOffTime())

final UpdateResults results = ds.updateFirst(findQuery,updateOperations); 

【问题讨论】:

    标签: java mongodb web-services morphia


    【解决方案1】:

    您可以“覆盖” MongoDB 集合中的任何条目,只需创建一个具有相同 _id 字段的新 DbObject 并将其保存到数据库中。因此,只需像设置任何 Java 对象一样设置对象中的字段并使用 myCollection.save(obj)

    【讨论】:

      【解决方案2】:

      只需保存对象,它就会用相同的@id 覆盖文档。这可以通过一行代码完成:

      dao.save(timesheet);
      

      更完整的 Morphia DAO 使用示例代码:

      class Dao extends BasicDAO<TimeSheet, String> {
        Dao(Datastore ds) {
          super(TimeSheet.class, ds);
        }
      }
      
      Datastore ds = morphia.createDatastore(mongoClient, DB_NAME);
      Dao dao = new Dao(ds);
      
      dao.save(timesheet);
      

      【讨论】:

        猜你喜欢
        • 2019-03-12
        • 2019-07-09
        • 2016-10-15
        • 1970-01-01
        • 2020-08-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-13
        • 2022-01-17
        相关资源
        最近更新 更多