Я пытаюсь использовать MongoOperarions, и метод upsert только для обновления / создания тех полей, которые присутствуют в параметре обновления.Но всякий раз, когда я отправляю пустой список полей для обновления, он удаляет все остальные поля в базе данных, оставаясь единственным, оставшим поле «Я». Ребята, вы знаете способ избежать этого??В идеале, я ожидал бы, что он просто скажет мне, что ничего не было сделано, вместо того, чтобы удалить все.
РЕДАКТИРОВАТЬ 1
Вот как выглядит мой код:
Query query = new Query();
query.addCriteria(Criteria.where("id").is(id));
final Update update = new Update();
fields.entrySet().stream()
.forEach(entry->{
if(entry.getValue()!=null)
update.set(entry.getKey(),entry.getValue());
});
return mongoOperation.findAndModify(query,update,Destination.class);
Как видите, я использую операцию $set
для обновления.Что происходит в моем сценарии, так это то, что переменная обновления не имеет парного значения поля, подлежащего обновлению, и в конечном итоге удаляет все под заданным идентификатором.