MongoDB Документ Update() с примером

\

⚡ Умное резюме

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

  • 🇧🇷 Метод `update()`: Команда update() изменяет поля в документах, соответствующих заданному условию.
  • 🎯 Соответствие условиям: Первый аргумент выбирает, какие документы следует обновить, например, {Employeeid:1}.
  • 🔧 $ комплект Operaтор: Оператор `$set` присваивает полю новое значение без замены всего документа.
  • 📚 Обновление многих: Опция multi, или updateMany(), изменяет каждый соответствующий документ, а не только один.
  • Вставить: Опция upsert вставляет новый документ, если ни один из существующих документов не соответствует условию.
  • 🔄 Современные методы: Функции updateOne(), updateMany() и replaceOne() в настоящее время заменяют устаревшую функцию update().

MongoDB Обновить() Документ

Основные обновления документов

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().

Часто задаваемые вопросы (FAQ)

Без оператора обновления, такого как `$set`, MongoDB Заменяет весь найденный документ предоставленным вами объектом, удаляя все не включенные поля. Всегда используйте `$set` для изменения конкретных полей, сохраняя при этомping Остальные детали остались нетронутыми.

Да. Если поле, указанное в переменной $set, отсутствует в соответствующем документе, MongoDB Добавляет его с заданным значением. Это делает переменную $set полезной как для обновления существующих полей, так и для добавления новых.

Используйте функцию findOneAndUpdate() с параметром returnDocument, установленным в значение 'after'. Она применяет изменения и возвращает измененный документ за одну атомарную операцию, что полезно, когда новые значения нужны немедленно.

Искусственный интеллект может преобразовать простой запрос в команду обновления или обновления множества с правильным условием и оператором, например, $set или $inc, и объяснить каждую часть, чтобы новички могли избежать ошибок.

Да. Искусственный интеллект может отметить обновление, в котором отсутствует переменная $set и которое заменит целые документы, предупредить, если фильтр соответствует всем параметрам, и предложить протестировать обновление на копии перед запуском в рабочей среде.

Подведем итог этой публикации следующим образом: