具有未定义字段数的 Morphia 更新文档
Morphia update document with undefined number of fields
我正在为 MongoDB 使用吗啡做一个小项目。我想知道什么是在不知道要更新哪个字段的情况下更新文档的最佳方法。比方说,我有一个表格,在保存到数据库后我可能想回来更改一些字段,但我还没有决定要更改什么。
我当前的解决方案是对所有字段进行更新,无论它是否被更改,当然它会抛出 null 异常。 Morphia 抱怨空值更新。
我的代码如下所示:
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)
我正在考虑使用 delegate/event 处理程序来单独更新每个字段,但我担心这可能会降低性能。
您应该只使用 datastore.save()。请参阅 http://mongodb.github.io/morphia/1.3/getting-started/quick-tour/
中的示例
我正在为 MongoDB 使用吗啡做一个小项目。我想知道什么是在不知道要更新哪个字段的情况下更新文档的最佳方法。比方说,我有一个表格,在保存到数据库后我可能想回来更改一些字段,但我还没有决定要更改什么。 我当前的解决方案是对所有字段进行更新,无论它是否被更改,当然它会抛出 null 异常。 Morphia 抱怨空值更新。 我的代码如下所示:
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)
我正在考虑使用 delegate/event 处理程序来单独更新每个字段,但我担心这可能会降低性能。
您应该只使用 datastore.save()。请参阅 http://mongodb.github.io/morphia/1.3/getting-started/quick-tour/
中的示例