Вы немного смущены.
Напишите, что это глобально высокоуровневая конфигурация соединения для определения уровня подтверждения, запрашиваемого у MongoDB для операций write
, таких как insert
, update
, remove
, et c ...
Другими словами, ваше приложение сообщает MongoDB минимальное подтверждение ( ACK ), ожидаемое от сервера.
https://docs.mongodb.com/manual/reference/write-concern/
upsert - это опция метода обновления MongoDB для создания нового документа, когда ни один документ не соответствует критериям запроса. По умолчанию false
, поэтому, когда не найдено ни одного документа, условие обновления игнорируется. Если это true
, он создаст новый документ с полями, определенными в параметрах query
+ update
.
Посмотрите, как это работает:
//search a student
Query query = new Query();
query.addCriteria(Criteria.where("studentId").is("1"));
//update condition
Update update = new Update();
update.set("triggerTime", System.currentTimeMillis());
mongoOperation.upsert(query, update, Student.class);
Он попытается соответствует studentId
. - Если найден, он обновит triggerTime
с текущим временем. - Если файл не найден, он вставит новый документ с studentId:"1", triggerTime:current time
, а другие поля будут null
(если у класса Student
больше полей).
К сожалению, нет условного обновления, выполняющего один запрос .
Вам нужно сделать это вручную: Поиск - Применить бизнес логи c - создать / сохранить / игнорировать