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: Задава стойността на поле, създавайки полето, ако то не съществува.
  • $unset: Премахва поле от документа изцяло.
  • $ вкл.: Увеличава или намалява числово поле с дадена стойност.
  • $mul: Умножава стойността на числово поле.
  • $преименуване: Преименува поле на ново име.
  • $push: Добавя стойност към поле от масив.
  • $pull: Премахва съвпадащи стойности от поле на масив.

Всеки оператор е насочен само към полетата, които посочите, оставяйки останалата част от документа непроменена. Можете да комбинирате няколко оператора в едно извикване на update(), за да промените няколко полета едновременно, което поддържа актуализациите точни и избягва презаписването на данни, които искате да запазите.

Актуализиране на множество стойности

За да се гарантира, че множество/групови документи се актуализират едновременно в MongoDB трябва да използвате мулти опцията, защото в противен случай по подразбиране се променя само един документ наведнъж.

Следващият пример показва как да актуализирате много документи.

В този пример първо ще намерим документа, който има идентификатор на служител като „1“ и ще променим името на служителя от „Мартин“ на „Нов Мартин“

Стъпка 1) Издайте командата за актуализиране

Стъпка 2) Изберете условието, което искате да използвате, за да решите кой документ трябва да бъде актуализиран. В нашия пример искаме документът, който има идентификатор на служител „1“, да бъде актуализиран.

Стъпка 3) Изберете кои имена на полета искате да промените и въведете новата им стойност съответно.

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

Ако командата е изпълнена успешно и ако изпълните "намирам" за търсене на документа с идентификатор на служител като 22, ще видите следния изход

Изход:

Актуализиране на множество стойности

Резултатът ясно показва, че един запис отговаря на условието и следователно стойността на съответното поле е променена.

Как да прехвърлите документ в MongoDB

Upsert е комбинация от update и insert. Когато го активирате, MongoDB актуализира документа, който отговаря на условието, или вмъква нов документ, ако не е намерено съвпадение. Това е полезно, когато не сте сигурни дали вече съществува запис.

За да извършите upsert, добавете опцията upsert, зададена на true, като трети аргумент на update():

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

Ето какво се случва:

  • Ако съществува документ с Employeeid 5, MongoDB актуализира полето си „Име на служителя“.
  • Ако такъв документ не съществува, MongoDB вмъква нов документ с Employeeid 5 и EmployeeName “Sofiда се".

Upserts са удобни за броячи, настройки и всеки работен процес, където искате да създадете запис при първото използване и да го актуализирате след това. В съвременния MongoDB, същото поведение е достъпно чрез updateOne() и updateMany() чрез подаване на {upsert: true} в опциите. Внимавайте с условието, защото широк филтър, комбиниран с upsert, може да създаде неочаквани документи.

updateOne() срещу updateMany() срещу replaceOne()

Методът update() вече е стара команда. MongoDB Шофьорите разделят поведението му на три по-ясни метода. Таблицата по-долу ги сравнява:

Начин на доставка Какво го прави Засегнати документи
updateOne() Прилага оператори за актуализиране към първия съответстващ документ Един
updateMany() Прилага оператори за актуализиране към всеки съответстващ документ Много
replaceOne() Заменя целия първи съответстващ документ с нов Един

Използвайте updateOne() за единична целенасочена промяна, updateMany() вместо старата опция multi и replaceOne(), когато искате да замените цял документ, вместо да редактирате полета. Тези методи връщат ясен резултат, показващ колко документа съвпадат и колко са били променени, което ги прави по-безопасни и по-лесни за дебъгване от update().

Въпроси и Отговори

Без оператор за актуализиране като $set, MongoDB замества целия съответстващ документ с предоставения от вас обект, като изтрива всички полета, които не са включени. Винаги използвайте $set, за да променяте конкретни полета, докато keeping останалото е непокътнато.

Да. Ако полето, посочено в $set, липсва в съответстващия документ, MongoDB добавя го с дадената стойност. Това прави $set полезен както за актуализиране на съществуващи полета, така и за добавяне на нови.

Използвайте findOneAndUpdate() с опцията returnDocument, зададена на „after“. Това прилага промяната и връща модифицирания документ с една атомарна операция, което е полезно, когато имате нужда от новите стойности незабавно.

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

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

Обобщете тази публикация с: