Spring Data Mongo更新对象的非空字段?

时间:2015-11-24 16:41:11

标签: spring mongodb spring-data-mongodb

例如,如果我有一个只设置了更新字段的Java对象(假设有一个未设置的第三个字段C):

obj.setA(1); obj.setB(2);

是否可以执行只更新UpdateA的{​​{1}}操作?看来我对Spring Data的唯一选择是使用B(这会将数据库中save()的值覆盖到C),或使用null,这需要我为对象中的每个字段构造一个update()对象,其中包含Update语句,以及硬编码Mongo字段名称。基本上我正在寻找的东西可以做这个更新操作:

set()

我正在用反思搞砸一下试图这样做(看看提供的解决方案here),这可能有用,但看起来有点hacky。如果Spring Data以某种方式支持这一点,我宁愿这样做。

1 个答案:

答案 0 :(得分:0)

正是出于o.s.d.m.core.query.Update的目的 来自reference documentation

// query: { "name" : "Joe" }
// update: { "$set" : { "age" : 35} }
mongoOps.updateFirst(query(where("name").is("Joe")), update("age", 35), Person.class);