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.

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


