MongoDB Update() Document cu Exemplu

\

โšก Rezumat inteligent

MongoDB Operaศ›iunile de tip Update() privind documentele modificฤƒ รฎnregistrฤƒrile existente dintr-o colecศ›ie. Metoda update() preia o condiศ›ie pentru selectarea documentelor ศ™i un modificator, cum ar fi $set, pentru a schimba valorile cรขmpurilor, iar opศ›iunea multi actualizeazฤƒ simultan mai multe documente corespondente.

  • โœ๏ธ Metoda update(): Comanda update() modificฤƒ cรขmpurile din documente care corespund unei anumite condiศ›ii.
  • ๐ŸŽฏ Condiศ›ie de potrivire: Primul argument selecteazฤƒ documentele care vor fi actualizate, cum ar fi {Employeeid:1}.
  • ๐Ÿ”ง $set Operator: Operatorul $set atribuie o nouฤƒ valoare unui cรขmp fฤƒrฤƒ a รฎnlocui รฎntregul document.
  • ๐Ÿ“š Actualizaศ›i Many: Opศ›iunea multi, sau updateMany(), modificฤƒ fiecare document care se potriveศ™te รฎn loc de unul singur.
  • โž• Suspensie: Opศ›iunea upsert insereazฤƒ un document nou atunci cรขnd niciun document existent nu corespunde condiศ›iei.
  • ๐Ÿ”„ Metode moderne: updateOne(), updateMany() ศ™i replaceOne() sunt รฎnlocuitorii actuali pentru funcศ›ia update() care a fost depreciatฤƒ.

MongoDB Actualizare() document

Actualizฤƒri de bazฤƒ ale documentelor

MongoDB furnizeazฤƒ comanda update() pentru a actualiza documentele unei colecศ›ii. Pentru a actualiza doar documentele pe care doriศ›i sฤƒ le actualizaศ›i, puteศ›i adฤƒuga un criteriu la declaraศ›ia de actualizare, astfel รฎncรขt doar documentele selectate sฤƒ fie actualizate.

Parametrii de bazฤƒ din comandฤƒ sunt o condiศ›ie pentru care documentul trebuie actualizat, iar urmฤƒtoarea este modificarea care trebuie efectuatฤƒ.

Urmฤƒtorul exemplu aratฤƒ cum se poate face acest lucru.

Pas 1) Lansaศ›i comanda de actualizare

Pas 2) Alegeศ›i condiศ›ia pe care doriศ›i sฤƒ o utilizaศ›i pentru a decide ce document trebuie actualizat. รŽn exemplul nostru, dorim sฤƒ actualizฤƒm documentul care are ID-ul de angajat 22.

Pas 3) Utilizaศ›i comanda set pentru a modifica numele cรขmpului

Pas 4) Alegeศ›i ce nume de cรขmp doriศ›i sฤƒ modificaศ›i ศ™i introduceศ›i noua valoare รฎn consecinศ›ฤƒ.

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

Dacฤƒ comanda este executatฤƒ cu succes, va fi afiศ™atฤƒ urmฤƒtoarea ieศ™ire

ieศ™ire:

Actualizฤƒri de bazฤƒ ale documentelor

Rezultatul aratฤƒ รฎn mod clar cฤƒ o รฎnregistrare se potriveศ™te cu condiศ›ia ศ™i, prin urmare, valoarea cรขmpului relevant a fost modificatฤƒ.

MongoDB Actualizeazฤƒ Operatori

Operatorul $set este cea mai comunฤƒ metodฤƒ de a modifica un cรขmp, dar MongoDB oferฤƒ mai mulศ›i operatori de actualizare pentru diferite nevoi. รŽi plasaศ›i รฎn al doilea argument al funcศ›iei update() alฤƒturi de sau รฎn loc de $set:

  • $set: Seteazฤƒ valoarea unui cรขmp, creรขnd cรขmpul dacฤƒ acesta nu existฤƒ.
  • $unset: Eliminฤƒ complet un cรขmp din document.
  • $inc: Mฤƒreศ™te sau micศ™oreazฤƒ un cรขmp numeric cu o anumitฤƒ valoare.
  • $mul: รŽnmulศ›eศ™te valoarea unui cรขmp numeric.
  • $rename: Redenumeศ™te un cรขmp cu un nume nou.
  • $push: Adaugฤƒ o valoare unui cรขmp de matrice.
  • $pull: Eliminฤƒ valorile corespondente dintr-un cรขmp de matrice.

Fiecare operator vizeazฤƒ doar cรขmpurile pe care le denumiศ›i, lฤƒsรขnd restul documentului neschimbat. Puteศ›i combina mai mulศ›i operatori รฎntr-un singur apel update() pentru a modifica mai multe cรขmpuri simultan, ceea ce menศ›ine precizia actualizฤƒrilor ศ™i evitฤƒ suprascrierea datelor pe care doriศ›i sฤƒ le pฤƒstraศ›i.

Actualizarea mai multor valori

Pentru a vฤƒ asigura cฤƒ mai multe documente/รฎn bloc sunt actualizate รฎn acelaศ™i timp รฎn MongoDB trebuie sฤƒ utilizaศ›i opศ›iunea multiplฤƒ, deoarece รฎn caz contrar, รฎn mod implicit, doar un document este modificat la un moment dat.

Urmฤƒtorul exemplu aratฤƒ cum sฤƒ actualizaศ›i multe documente.

รŽn acest exemplu, vom gฤƒsi mai รฎntรขi documentul care are ID-ul de angajat ca โ€ž1โ€ ศ™i vom schimba numele angajatului din โ€žMartinโ€ รฎn โ€žNewMartinโ€

Pas 1) Lansaศ›i comanda de actualizare

Pas 2) Alegeศ›i condiศ›ia pe care doriศ›i sฤƒ o utilizaศ›i pentru a decide ce document trebuie actualizat. รŽn exemplul nostru, dorim ca documentul care are ID-ul de angajat โ€ž1โ€ sฤƒ fie actualizat.

Pas 3) Alegeศ›i numele cรขmpurilor pe care doriศ›i sฤƒ le modificaศ›i ศ™i introduceศ›i noua lor valoare รฎn consecinศ›ฤƒ.

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

Dacฤƒ comanda este executatฤƒ cu succes ศ™i dacฤƒ rulaศ›i "gฤƒsi" comandฤƒ pentru a cฤƒuta documentul cu ID de angajat ca 22, veศ›i vedea cฤƒ va fi afiศ™atฤƒ urmฤƒtoarea ieศ™ire

ieศ™ire:

Actualizarea mai multor valori

Rezultatul aratฤƒ รฎn mod clar cฤƒ o รฎnregistrare se potriveศ™te cu condiศ›ia ศ™i, prin urmare, valoarea cรขmpului relevant a fost modificatฤƒ.

Cum sฤƒ inversezi un document รฎn MongoDB

O modificare upsert este o combinaศ›ie รฎntre actualizare ศ™i inserare. Cรขnd o activaศ›i, MongoDB actualizeazฤƒ documentul care corespunde condiศ›iei sau insereazฤƒ un document nou dacฤƒ nu se gฤƒseศ™te nicio potrivire. Acest lucru este util atunci cรขnd nu sunteศ›i sigur dacฤƒ o รฎnregistrare existฤƒ deja.

Pentru a efectua o operaศ›iune upsert, adฤƒugaศ›i opศ›iunea upsert setatฤƒ la true ca al treilea argument al funcศ›iei update():

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

Iatฤƒ ce se รฎntรขmplฤƒ:

  • Dacฤƒ existฤƒ un document cu Employeeid 5, MongoDB actualizeazฤƒ cรขmpul EmployeeName.
  • Dacฤƒ nu existฤƒ un astfel de document, MongoDB insereazฤƒ un document nou cu Employeeid 5 ศ™i EmployeeName โ€žSofiA".

Upsert-urile sunt utile pentru contoare, setฤƒri ศ™i orice flux de lucru รฎn care doriศ›i sฤƒ creaศ›i o รฎnregistrare la prima utilizare ศ™i sฤƒ o actualizaศ›i ulterior. รŽn mediul modern MongoDB, acelaศ™i comportament este disponibil prin updateOne() ศ™i updateMany() prin transmiterea funcศ›iei {upsert: true} รฎn opศ›iuni. Fiศ›i atenศ›i la condiศ›ie, deoarece un filtru larg combinat cu upsert poate crea documente neaศ™teptate.

updateOne() vs. updateMany() vs. replaceOne()

Metoda update() este acum o comandฤƒ moศ™tenitฤƒ. Modern MongoDB ศ˜oferii รฎศ™i รฎmpart comportamentul รฎn trei metode mai clare. Tabelul de mai jos le comparฤƒ:

Metodฤƒ Ce face Documente afectate
updateOne() Aplicฤƒ operatori de actualizare primului document corespondent O
updateMany() Aplicฤƒ operatori de actualizare fiecฤƒrui document corespondent Multe
replaceOne() รŽnlocuieศ™te รฎntregul prim document corespondent cu unul nou O

Foloseศ™te updateOne() pentru o singurฤƒ modificare ศ›intitฤƒ, updateMany() รฎn loc de vechea opศ›iune multi ศ™i replaceOne() cรขnd doreศ™ti sฤƒ schimbi un document รฎntreg รฎn loc de cรขmpuri de editare. Aceste metode returneazฤƒ un rezultat clar care aratฤƒ cรขte documente s-au potrivit ศ™i cรขte au fost modificate, ceea ce le face mai sigure ศ™i mai uศ™or de depanat decรขt update().

รŽntrebฤƒri frecvente

Fฤƒrฤƒ un operator de actualizare precum $set, MongoDB รฎnlocuieศ™te รฎntregul document corespondent cu obiectul furnizat de dvs., ศ™tergรขnd toate cรขmpurile neincluse. Folosiศ›i รฎntotdeauna $set pentru a modifica anumite cรขmpuri รฎn timp ce pฤƒstraศ›iping restul intact.

Da. Dacฤƒ cรขmpul numit รฎn $set lipseศ™te din documentul corespondent, MongoDB รฎl adaugฤƒ cu valoarea datฤƒ. Acest lucru face ca $set sฤƒ fie util atรขt pentru actualizarea cรขmpurilor existente, cรขt ศ™i pentru adฤƒugarea unora noi.

Foloseศ™te findOneAndUpdate() cu opศ›iunea returnDocument setatฤƒ la โ€žafterโ€. Aceasta aplicฤƒ modificarea ศ™i returneazฤƒ documentul modificat รฎntr-o singurฤƒ operaศ›ie atomicฤƒ, ceea ce este util atunci cรขnd ai nevoie imediat de noile valori.

Inteligenศ›a artificialฤƒ poate transforma o simplฤƒ cerere รฎntr-o comandฤƒ de actualizare sau updateMany cu condiศ›ia ศ™i operatorul corect, cum ar fi $set sau $inc, ศ™i poate explica fiecare parte, astfel รฎncรขt รฎncepฤƒtorii sฤƒ evite greศ™elile.

Da. Inteligenศ›a artificialฤƒ poate semnala o actualizare care omite $set ศ™i ar รฎnlocui documente รฎntregi, poate avertiza cรขnd un filtru se potriveศ™te cu toate ศ™i poate sugera testarea pe o copie รฎnainte de a o rula รฎn producศ›ie.

Rezumaศ›i aceastฤƒ postare cu: