具有多个文件的文档的MongoDB / Morphia更新操作

时间:2016-01-16 09:38:34

标签: java mongodb morphia

我有一个实体包含20个不同的键/局部变量。如果我想更新文档,我可以使用UpdateOperations来执行查询,但我必须提交归档并从新对象设置新值..如果有任何更新方法db中的当前doc仅包含新字段

让我们说:

   public class item {

        @Id
        @Getter
        @Setter
        private ObjectId id;

        @Getter
        @Setter
        private String itemID;

        @Getter
        @Setter
        private String itemTitle;
..
..


    }

所以假设我有一个项目存储,现在我从GUI获得了一个新的DTO,只有一些字段,其余的都是空的。我想创建一个通用更新操作,它只接受来自DTO对象的非可空值,并将在数据库中的现有文档中更新它。

甚至可能吗?

2 个答案:

答案 0 :(得分:1)

我想是的!

我看到两种可能的方式:

备选方案1:您可以使用反射来迭代DTO中的每个字段,并将值放入从DB恢复的文档的副本中。在循环结束时,您可以更新文档。

备选方案2:仅更新所需字段。 Mongo只能更新更新操作中的一部分字段:Update Data with Java Driver

答案 1 :(得分:1)

merge可以满足您的需求:Work as if you did an update with each field in the entity doing a $set