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.

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


