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

Spring Data Mongo是否更新对象的非空字段?,spring,mongodb,spring-data-mongodb,Spring,Mongodb,Spring Data Mongodb,例如,如果我有一个只设置了更新字段的Java对象(假设有第三个未设置的字段C): obj.setA(1); 目标挫折(2) 是否可以执行只更新A和B的Update操作?似乎我对Spring数据的唯一选择是使用save()(这会将数据库中C的值覆盖为null),或者使用update(),这要求我为对象中的每个字段构造一个update对象,并使用set()语句,以及硬编码Mongo字段名称。基本上,我要寻找的是可以执行此更新操作的东西: $set:{'a':1,'b':2} 我在思考方面有些混乱,试

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

obj.setA(1);
目标挫折(2)

是否可以执行只更新
A
B
Update
操作?似乎我对Spring数据的唯一选择是使用
save()
(这会将数据库中
C
的值覆盖为
null
),或者使用
update()
,这要求我为对象中的每个字段构造一个
update
对象,并使用
set()
语句,以及硬编码Mongo字段名称。基本上,我要寻找的是可以执行此更新操作的东西:

$set:{'a':1,'b':2}


我在思考方面有些混乱,试图这样做(看看提供的解决方案),这可能会起作用,但似乎有点黑客。如果Spring数据以某种方式支持这一点,我宁愿这样做。

o.s.d.m.core.query.Update
正是为了这个目的。
从:

//查询:{“name”:“Joe”}
//更新:{“$set”:{“年龄”:35}
mongoOps.updateFirst(查询(其中(“名称”)是(“乔”)),update(“年龄”,35),Person.class);

o.s.d.m.core.query.Update
正是为了这个目的。
从:

//查询:{“name”:“Joe”}
//更新:{“$set”:{“年龄”:35}
mongoOps.updateFirst(查询(其中(“名称”)是(“乔”)),update(“年龄”,35),Person.class);