MongoDB Документ Update() із прикладом

\

⚡ Розумний підсумок

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

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

MongoDB Документ Update().

Основні оновлення документів

MongoDB надає команду update() для оновлення документів колекції. Щоб оновити лише документи, які потрібно оновити, можна додати критерій до заяви про оновлення, щоб оновлюватися лише вибрані документи.

Основні параметри в команді - це умова, для якої потрібно оновити документ, а наступне - модифікація, яку потрібно виконати.

Наступний приклад показує, як це можна зробити.

Крок 1) Видайте команду оновлення

Крок 2) Виберіть умову, за якою ви хочете вирішити, який документ потрібно оновити. У нашому прикладі ми хочемо оновити документ, який має ідентифікатор працівника 22.

Крок 3) Використовуйте команду set, щоб змінити назву поля

Крок 4) Виберіть ім’я поля, яке потрібно змінити, і введіть нове значення відповідно.

db.Employee.update(
{"Employeeid" : 1},
{$set: { "EmployeeName" : "NewMartin"}});

Якщо команда виконана успішно, буде показано наступний результат

вихід:

Основні оновлення документів

Вихідні дані чітко показують, що один запис відповідає умові, і, отже, відповідне значення поля було змінено.

MongoDB Оновити Operaторс

Оператор $set є найпоширенішим способом зміни поля, але MongoDB надає кілька операторів оновлення для різних потреб. Ви розміщуєте їх у другому аргументі update() разом із $set або замість нього:

  • $set: Встановлює значення поля, створюючи поле, якщо воно не існує.
  • $знято: Повністю видаляє поле з документа.
  • $inc: Збільшує або зменшує числове поле на задану величину.
  • $mul: Множить значення числового поля.
  • $перейменувати: Перейменовує поле на нове ім'я.
  • $штовхнути: Додає значення до поля масиву.
  • $витягнути: Видаляє значення, що збігаються, з поля масиву.

Кожен оператор застосовується лише до полів, які ви назвали, залишаючи решту документа незмінною. Ви можете поєднати кілька операторів в одному виклику update(), щоб змінити кілька полів одночасно, що забезпечить точність оновлень і уникнути перезапису даних, які ви хочете зберегти.

Оновлення кількох значень

Щоб забезпечити одночасне оновлення кількох/масових документів у MongoDB вам потрібно використовувати опцію кількох, оскільки інакше за замовчуванням одночасно змінюється лише один документ.

У наступному прикладі показано, як оновити багато документів.

У цьому прикладі ми спочатку знайдемо документ із ідентифікатором працівника «1» і змінимо ім’я працівника з «Мартін» на «Новий Мартін».

Крок 1) Видайте команду оновлення

Крок 2) Виберіть умову, за якою ви хочете вирішити, який документ потрібно оновити. У нашому прикладі ми хочемо оновити документ, який має ідентифікатор працівника «1».

Крок 3) Виберіть ім’я поля, яке потрібно змінити, і введіть відповідне нове значення.

db.Employee.update
(
	{
		Employeeid : 1
	},
	{
		$set :
		{
			"EmployeeName" : "NewMartin",
			"Employeeid" : 22
		}
	}
)

Якщо команда виконана успішно і якщо ви запустите «знайти» команди для пошуку документа з ідентифікатором працівника 22 ви побачите наступний результат

вихід:

Оновлення кількох значень

Вихідні дані чітко показують, що один запис відповідає умові, і, отже, відповідне значення поля було змінено.

Як оновити документ у MongoDB

Upsert — це поєднання upsert та insert. Коли ви його вмикаєте, MongoDB оновлює документ, який відповідає умові, або вставляє новий документ, якщо збігів не знайдено. Це корисно, коли ви не впевнені, чи запис вже існує.

Щоб виконати upsert, додайте опцію upsert зі значенням true як третій аргумент функції update():

db.Employee.update(
  {Employeeid: 5},
  {$set: {EmployeeName: "Sofia"}},
  {upsert: true}
)

Ось що відбувається:

  • Якщо документ з Employeeid 5 існує, MongoDB оновлює поле EmployeeName.
  • Якщо такого документа немає, MongoDB вставляє новий документ з Employeeid 5 та EmployeeName “Sofiа".

Upserts зручні для лічильників, налаштувань та будь-якого робочого процесу, де потрібно створити запис під час першого використання та оновити його згодом. У сучасному MongoDB, така сама поведінка доступна через updateOne() та updateMany() шляхом передачі {upsert: true} в опціях. Будьте обережні з умовою, оскільки широкий фільтр у поєднанні з upsert може створювати неочікувані документи.

updateOne() проти updateMany() проти replaceOne()

Метод update() тепер є застарілою командою. Сучасний MongoDB Водії поділяють його поведінку на три чіткіші методи. У таблиці нижче їх порівнюють:

Метод Що вона робить Документи, що зазнали впливу
оновленняOne() Застосовує оператори оновлення до першого відповідного документа Один
оновленняMany() Застосовує оператори оновлення до кожного відповідного документа Багато
replaceOne() Замінює весь перший відповідний документ новим Один

Використовуйте updateOne() для окремої цільової зміни, updateMany() замість старого параметра multi та replaceOne(), коли потрібно замінити весь документ, а не редагувати поля. Ці методи повертають чіткий результат, який показує, скільки документів збіглося, а скільки було змінено, що робить їх безпечнішими та простішими для налагодження, ніж update().

Поширені запитання

Без оператора оновлення, такого як $set, MongoDB замінює весь збіг документа наданим вами об'єктом, видаляючи будь-які поля, що не включені. Завжди використовуйте $set для зміни певних полів, зберігаючиping решта ціла.

Так. Якщо поле, зазначене в $set, відсутнє у відповідному документі, MongoDB додає його із заданим значенням. Це робить $set корисним як для оновлення існуючих полів, так і для додавання нових.

Використовуйте findOneAndUpdate() з опцією returnDocument, встановленою на «after». Це застосовує зміни та повертає модифікований документ за одну атомарну операцію, що корисно, коли вам потрібні нові значення негайно.

Штучний інтелект може перетворити простий запит на команду update або updateMany з правильною умовою та оператором, таким як $set або $inc, і пояснити кожну частину, щоб новачки уникали помилок.

Так. Штучний інтелект може позначити оновлення, яке пропускає $set і замінює цілі документи, попередити, коли фільтр відповідає всім параметрам, і запропонувати протестувати копію перед запуском у продакшені.

Підсумуйте цей пост за допомогою: