MongoDB Документ Update() с примером
\
⚡ Умное резюме
MongoDB Метод `update()` изменяет существующие записи в коллекции. Метод `update()` принимает условие для выбора документов и модификатор, например `$set`, для изменения значений полей, а опция `multi` обновляет несколько соответствующих документов одновременно.

Основные обновления документов
MongoDB предоставляет команду update() для обновления документов коллекции. Чтобы обновить только те документы, которые вы хотите обновить, вы можете добавить критерий в оператор обновления, чтобы обновлялись только выбранные документы.
Основные параметры в команде — это условие, при котором документ необходимо обновить, а следующее — модификация, которую необходимо выполнить.
Следующий пример показывает, как это можно сделать.
Шаг 1) Выполните команду обновления
Шаг 2) Выберите условие, которое вы хотите использовать, чтобы решить, какой документ необходимо обновить. В нашем примере мы хотим обновить документ с идентификатором сотрудника 22.
Шаг 3) Используйте команду set, чтобы изменить имя поля.
Шаг 4) Выберите имя поля, которое вы хотите изменить, и введите новое значение соответственно.
db.Employee.update( {"Employeeid" : 1}, {$set: { "EmployeeName" : "NewMartin"}});
Если команда выполнена успешно, будет показан следующий вывод
Выход:
Вывод ясно показывает, что одна запись соответствует условию и, следовательно, соответствующее значение поля было изменено.
MongoDB Обновление ПО OperaTORs
Оператор `$set` — наиболее распространенный способ изменения поля, но MongoDB Предоставляет несколько операторов обновления для различных нужд. Вы можете разместить их во втором аргументе функции update() рядом с оператором $set или вместо него:
- $set: Устанавливает значение поля, создавая поле, если оно не существует.
- $сброшено: Удаляет поле полностью из документа.
- $вкл: Увеличивает или уменьшает числовое поле на заданную величину.
- $mul: Умножает значение числового поля.
- $rename: Переименовывает поле, присваивая ему новое имя.
- $push: Добавляет значение в поле массива.
- $тянуть: Удаляет совпадающие значения из поля массива.
Каждый оператор воздействует только на указанные вами поля, оставляя остальную часть документа без изменений. Вы можете объединить несколько операторов в одном вызове функции update() для одновременного изменения нескольких полей, что обеспечивает точность обновлений и предотвращает перезапись данных, которые вы хотите сохранить.
Обновление нескольких значений
Чтобы гарантировать одновременное обновление нескольких/массовых документов в MongoDB вам нужно использовать опцию multi, потому что в противном случае по умолчанию одновременно изменяется только один документ.
В следующем примере показано, как обновить множество документов.
В этом примере мы собираемся сначала найти документ, у которого идентификатор сотрудника равен «1», и изменить имя сотрудника с «Мартин» на «НовыйМартин».
Шаг 1) Выполните команду обновления
Шаг 2) Выберите условие, которое вы хотите использовать, чтобы решить, какой документ необходимо обновить. В нашем примере мы хотим, чтобы документ с идентификатором сотрудника «1» был обновлен.
Шаг 3) Выберите, какие имена полей вы хотите изменить, и введите их новое значение соответствующим образом.
db.Employee.update ( { Employeeid : 1 }, { $set : { "EmployeeName" : "NewMartin", "Employeeid" : 22 } } )
Если команда выполнена успешно и если вы запустите "Находить" Команда для поиска документа с идентификатором сотрудника 22, вы увидите следующий результат:
Выход:
Вывод ясно показывает, что одна запись соответствует условию и, следовательно, соответствующее значение поля было изменено.
Как вставить документ обратно в MongoDB
Операция upsert представляет собой комбинацию операций update и insert. При её включении... MongoDB Обновляет документ, соответствующий условию, или вставляет новый документ, если совпадение не найдено. Это полезно, когда вы не уверены, существует ли запись уже.
Для выполнения операции обновления/вставки добавьте параметр upsert со значением true в качестве третьего аргумента функции update():
db.Employee.update( {Employeeid: 5}, {$set: {EmployeeName: "Sofia"}}, {upsert: true} )
Вот что происходит:
- Если существует документ с идентификатором сотрудника 5, MongoDB обновляет поле EmployeeName.
- Если такого документа не существует, MongoDB вставляет новый документ с идентификатором сотрудника 5 и именем сотрудника "Sofiк ».
Операции обновления/вставки удобны для счетчиков, настроек и любых рабочих процессов, где необходимо создать запись при первом использовании и обновить ее впоследствии. В современных условиях MongoDBАналогичное поведение доступно через функции updateOne() и updateMany() путем передачи параметра {upsert: true}. Будьте осторожны с условием, поскольку широкий фильтр в сочетании с upsert может привести к созданию неожиданных документов.
updateOne() против updateMany() против replaceOne()
Метод `update()` теперь является устаревшей командой. Современный MongoDB Водители разделяют это поведение на три более понятных метода. В таблице ниже приведено их сравнение:
| Способ доставки | Что она делает | Затронутые документы |
|---|---|---|
| updateOne() | Применяет операторы обновления к первому соответствующему документу. | Одна |
| updateMany () | Применяет операторы обновления ко всем соответствующим документам. | Много |
| заменитьОдин() | Заменяет весь первый соответствующий документ новым. | Одна |
Используйте updateOne() для внесения одного целевого изменения, updateMany() вместо старого варианта multi, а replaceOne() — когда хотите заменить весь документ, а не редактировать поля. Эти методы возвращают понятный результат, показывающий, сколько документов соответствует условиям и сколько было изменено, что делает их более безопасными и простыми в отладке, чем update().


