2015-11-24 3 views
0

Если у меня есть объект Java с только обновляемые поля набора, например (предположим, что есть третье поле C что не установлен):Spring Data Mongo обновляет ненулевые поля объекта?

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

Можно ли выполнить Update операцию, только обновления A и B? Оказывается, только мои варианты с Spring Data должны использовать save() (который перезаписывает значение для C в базе данных для null), или использовать update(), который требует от меня, чтобы построить Update объект с set() заявления для каждого поля в объекте, а также имена монгольских полей hardcode. По сути то, что я ищу что-то, что бы сделать эту операцию обновления:

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

я бездельничал немного с отражением, чтобы попытаться сделать это (если смотреть на решения, предлагаемые here), которые потенциально могли бы работа, но это кажется немного взломанным. Если Spring Data так или иначе поддерживает это, я бы предпочел сделать это.

ответ

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); 
Смежные вопросы