我正在为MongoDB使用morphia开展一个小项目。我想知道什么是更新文档的最佳方式,而不知道要更新哪个字段。比方说,我有一个表单,在保存到数据库之后我可能想回来更改一些字段,但我还没有决定要改变什么。 我当前的解决方案是对所有字段进行更新,无论它是否被更改,当然它会抛出null异常。 Morphia抱怨null值更新。 我的代码如下所示:
Query<Project> q = datastore.find(Project.class, "_id", projectToUpdate.getId());
UpdateOperations<Project> update
= datastore.createUpdateOperations(Project.class)
.set("name", updatedProject.getName())
.set("deadline", updatedProject.getDeadline())
.set("priority", updatedProject.getPriority())
.set("completion", updatedProject.getCompletion())
.set("description", updatedProject.getDescription())
.set("projectManager", updatedProject.getPM())
.set("collaborators", updatedProject.getAllCollaborators())
.set("teams", updatedProject.getAllTeams())
.set("userStories", updatedProject.getUserStories())
.set("log", updatedProject.getLog());
datastore.findAndModify(q, update);
异常
Exception in thread "main" org.mongodb.morphia.query.QueryException: Value cannot be null.
at org.mongodb.morphia.query.UpdateOpsImpl.set(UpdateOpsImpl.java:220)
at controllers.QueryProjects.updateProject(QueryProjects.java:78)
at controllers.DBConnection.TestMongo(DBConnection.java:152)
at penelope.Main.main(Main.java:12)
我正在考虑使用委托/事件处理程序来单独更新每个字段,但我担心这可能会降低性能。
答案 0 :(得分:0)
您应该只使用datastore.save()。请参阅http://mongodb.github.io/morphia/1.3/getting-started/quick-tour/
上的示例