有没有办法使用mongoDB morphia从java更新/替换整个mongoDB文件?

时间:2017-09-01 06:35:39

标签: java mongodb web-services morphia

我需要从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); 

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

只需保存对象,它将使用相同的@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);