MongoDB Update() dokument s primjerom

\

โšก Pametni saลพetak

MongoDB Operacije aลพuriranja() nad dokumentima mijenjaju postojeฤ‡e zapise u kolekciji. Metoda aลพuriranja() uzima uvjet za odabir dokumenata i modifikator kao ลกto je $set za promjenu vrijednosti polja, a opcija viลกestrukih aลพurira nekoliko odgovarajuฤ‡ih dokumenata odjednom.

  • โœ๏ธ Metoda aลพuriranja(): Naredba update() mijenja polja u dokumentima koja odgovaraju zadanom uvjetu.
  • ๐ŸŽฏ Uvjet podudaranja: Prvi argument odabire koje dokumente treba aลพurirati, kao ลกto je {Employeeid:1}.
  • ๐Ÿ”ง $set Operator: Operator $set dodjeljuje novu vrijednost polju bez zamjene cijelog dokumenta.
  • ๐Ÿ“š Aลพuriraj mnogo: Opcija multi, ili updateMany(), mijenja svaki dokument koji se podudara umjesto samo jednog.
  • โž• Upsert: Opcija upsert umeฤ‡e novi dokument kada nijedan postojeฤ‡i dokument ne odgovara uvjetu.
  • ๐Ÿ”„ Moderne metode: updateOne(), updateMany() i replaceOne() su trenutne zamjene za zastarjeli update().

MongoDB Update() dokument

Osnovna aลพuriranja dokumenata

MongoDB pruลพa naredbu update() za aลพuriranje dokumenata zbirke. Da biste aลพurirali samo dokumente koje ลพelite aลพurirati, moลพete dodati kriterij izjavi aลพuriranja tako da se aลพuriraju samo odabrani dokumenti.

Osnovni parametri u naredbi su uvjet za koji dokument treba aลพurirati, a sljedeฤ‡i je modifikacija koju je potrebno izvrลกiti.

Sljedeฤ‡i primjer pokazuje kako se to moลพe uฤiniti.

Korak 1) Izdajte naredbu za aลพuriranje

Korak 2) Odaberite uvjet koji ลพelite koristiti za odluฤivanje koji dokument treba aลพurirati. U naลกem primjeru ลพelimo aลพurirati dokument koji ima ID zaposlenika 22.

Korak 3) Koristite naredbu set za izmjenu naziva polja

Korak 4) Odaberite koji naziv polja ลพelite izmijeniti i u skladu s tim unesite novu vrijednost.

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

Ako je naredba uspjeลกno izvrลกena, prikazat ฤ‡e se sljedeฤ‡i izlaz

Izlaz:

Osnovna aลพuriranja dokumenata

Izlaz jasno pokazuje da jedan zapis odgovara uvjetu i stoga je relevantna vrijednost polja izmijenjena.

MongoDB Nadopune Operaulagatelji

Operator $set je najฤeลกฤ‡i naฤin za promjenu polja, ali MongoDB pruลพa nekoliko operatora aลพuriranja za razliฤite potrebe. Postavljate ih u drugi argument funkcije update() uz ili umjesto $set:

  • $set: Postavlja vrijednost polja, kreirajuฤ‡i polje ako ono ne postoji.
  • $poniลกteno: U potpunosti uklanja polje iz dokumenta.
  • $inc: Poveฤ‡ava ili smanjuje numeriฤko polje za zadani iznos.
  • $mul: Mnoลพi vrijednost numeriฤkog polja.
  • $preimenuj: Preimenuje polje u novo ime.
  • $push: Dodaje vrijednost polju niza.
  • $povuฤ‡i: Uklanja odgovarajuฤ‡e vrijednosti iz polja niza.

Svaki operator cilja samo polja koja imenujete, ostavljajuฤ‡i ostatak dokumenta nepromijenjenim. Moลพete kombinirati nekoliko operatora u jednom pozivu funkcije update() kako biste istovremeno izmijenili viลกe polja, ลกto odrลพava preciznost aลพuriranja i izbjegava prepisivanje podataka koje ลพelite zadrลพati.

Aลพuriranje viลกestrukih vrijednosti

Kako bi se osiguralo da se viลกestruki/skupni dokumenti aลพuriraju u isto vrijeme u MongoDB morate koristiti viลกestruku opciju jer se inaฤe prema zadanim postavkama mijenja samo jedan dokument u isto vrijeme.

Sljedeฤ‡i primjer pokazuje kako aลพurirati mnoge dokumente.

U ovom primjeru prvo ฤ‡emo pronaฤ‡i dokument koji ima ID zaposlenika kao "1" i promijeniti ime zaposlenika iz "Martin" u "NewMartin"

Korak 1) Izdajte naredbu za aลพuriranje

Korak 2) Odaberite uvjet koji ลพelite koristiti za odluฤivanje koji dokument treba aลพurirati. U naลกem primjeru, ลพelimo da se dokument koji ima ID zaposlenika "1" aลพurira.

Korak 3) Odaberite koje nazive polja ลพelite izmijeniti i u skladu s tim unesite njihovu novu vrijednost.

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

Ako je naredba uspjeลกno izvrลกena i ako pokrenete "pronaฤ‡i" naredbom za traลพenje dokumenta s ID-om zaposlenika 22 vidjet ฤ‡ete sljedeฤ‡i izlaz

Izlaz:

Aลพuriranje viลกestrukih vrijednosti

Izlaz jasno pokazuje da jedan zapis odgovara uvjetu i stoga je relevantna vrijednost polja izmijenjena.

Kako umetnuti dokument u MongoDB

Upsert je kombinacija aลพuriranja i umetanja. Kada ga omoguฤ‡ite, MongoDB aลพurira dokument koji odgovara uvjetu ili umeฤ‡e novi dokument ako se ne pronaฤ‘e podudaranje. Ovo je korisno kada niste sigurni postoji li veฤ‡ zapis.

Za izvoฤ‘enje upsert-a, dodajte opciju upsert postavljenu na true kao treฤ‡i argument funkcije update():

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

Evo ลกto se dogaฤ‘a:

  • Ako postoji dokument s Employeeid-om 5, MongoDB aลพurira polje Ime zaposlenika.
  • Ako takav dokument ne postoji, MongoDB umeฤ‡e novi dokument s Employeeid-om 5 i EmployeeName โ€œSofido".

Upsert-i su korisni za brojaฤe, postavke i bilo koji tijek rada gdje ลพelite stvoriti zapis pri prvoj upotrebi i aลพurirati ga nakon toga. U modernom MongoDB, isto ponaลกanje je dostupno putem updateOne() i updateMany() prosljeฤ‘ivanjem {upsert: true} u opcijama. Budite oprezni s uvjetom, jer ลกiroki filter u kombinaciji s upsertom moลพe stvoriti neoฤekivane dokumente.

updateOne() u odnosu na updateMany() u odnosu na replaceOne()

Metoda update() sada je naslijeฤ‘ena naredba. Moderna MongoDB Vozaฤi dijele njegovo ponaลกanje na tri jasnije metode. Tablica u nastavku ih usporeฤ‘uje:

naฤin Ono ลกto se takoฤ‘er Zahvaฤ‡eni dokumenti
updateOne() Primjenjuje operatore aลพuriranja na prvi odgovarajuฤ‡i dokument jedan
aลพurirajMnogo() Primjenjuje operatore aลพuriranja na svaki odgovarajuฤ‡i dokument Mnogi
zamijeniJedan() Zamjenjuje cijeli prvi odgovarajuฤ‡i dokument novim jedan

Koristite updateOne() za pojedinaฤnu ciljanu promjenu, updateMany() umjesto stare multi opcije i replaceOne() kada ลพelite zamijeniti cijeli dokument umjesto polja za ureฤ‘ivanje. Ove metode vraฤ‡aju jasan rezultat koji pokazuje koliko se dokumenata podudaralo i koliko ih je izmijenjeno, ลกto ih ฤini sigurnijima i lakลกima za otklanjanje pogreลกaka od update().

Pitanja i odgovori

Bez operatora aลพuriranja kao ลกto je $set, MongoDB zamjenjuje cijeli odgovarajuฤ‡i dokument objektom koji navedete, briลกuฤ‡i sva polja koja nisu ukljuฤena. Uvijek koristite $set za promjenu odreฤ‘enih polja dok keeping ostalo netaknuto.

Da. Ako polje navedeno u $set nedostaje u odgovarajuฤ‡em dokumentu, MongoDB zbraja ga s danom vrijednoลกฤ‡u. Zbog toga je $set koristan i za aลพuriranje postojeฤ‡ih polja i za dodavanje novih.

Koristite findOneAndUpdate() s opcijom returnDocument postavljenom na 'nakon'. Primjenjuje promjenu i vraฤ‡a modificirani dokument u jednoj atomskoj operaciji, ลกto je korisno kada su vam nove vrijednosti potrebne odmah.

Umjetna inteligencija moลพe pretvoriti obiฤan zahtjev u naredbu update ili updateMany s pravim uvjetom i operatorom, kao ลกto su $set ili $inc, te objasniti svaki dio kako bi poฤetnici izbjegli pogreลกke.

Da. Umjetna inteligencija moลพe oznaฤiti aลพuriranje koje izostavlja $set i zamijenilo bi cijele dokumente, upozoriti kada filter odgovara svemu i predloลพiti testiranje na kopiji prije pokretanja u produkciji.

Saลพmite ovu objavu uz: