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: