MongoDB Update() Dokument med eksempel
\
โก Smart oppsummering
MongoDB Update() Dokumentoperasjoner endrer eksisterende poster i en samling. Metoden update() tar en betingelse for รฅ velge dokumenter og en modifikator som $set for รฅ endre feltverdier, og multi-alternativet oppdaterer flere samsvarende dokumenter samtidig.

Grunnleggende dokumentoppdateringer
MongoDB gir kommandoen update() for รฅ oppdatere dokumentene til en samling. For รฅ oppdatere kun dokumentene du รธnsker รฅ oppdatere, kan du legge til et kriterium i oppdateringserklรฆringen slik at kun utvalgte dokumenter oppdateres.
De grunnleggende parameterne i kommandoen er en tilstand for hvilket dokument som mรฅ oppdateres, og den neste er modifikasjonen som mรฅ utfรธres.
Fรธlgende eksempel viser hvordan dette kan gjรธres.
Trinn 1) Utfรธr oppdateringskommandoen
Trinn 2) Velg betingelsen du vil bruke for รฅ bestemme hvilket dokument som skal oppdateres. I vรฅrt eksempel รธnsker vi รฅ oppdatere dokumentet som har medarbeider-ID 22.
Trinn 3) Bruk set-kommandoen til รฅ endre feltnavnet
Trinn 4) Velg hvilket feltnavn du vil endre og angi den nye verdien tilsvarende.
db.Employee.update( {"Employeeid" : 1}, {$set: { "EmployeeName" : "NewMartin"}});
Hvis kommandoen utfรธres vellykket, vil fรธlgende utdata vises
Utgang:
Utdataene viser tydelig at รฉn post samsvarte med betingelsen, og derfor ble den relevante feltverdien endret.
MongoDB Oppdater Operatorer
Operatoren $set er den vanligste mรฅten รฅ endre et felt pรฅ, men MongoDB tilbyr flere oppdateringsoperatorer for ulike behov. Du plasserer dem i det andre argumentet til update() ved siden av eller i stedet for $set:
- $sett: Angir verdien til et felt, og oppretter feltet hvis det ikke finnes.
- $unset: Fjerner et felt fullstendig fra dokumentet.
- $inc: รker eller reduserer et numerisk felt med en gitt mengde.
- $mul: Multipliserer verdien av et numerisk felt.
- $gi nytt navn: Gir et felt et nytt navn.
- $push: Legger til en verdi i et arrayfelt.
- $trekk: Fjerner samsvarende verdier fra et arrayfelt.
Hver operator er kun rettet mot feltene du navngir, og lar resten av dokumentet vรฆre uendret. Du kan kombinere flere operatorer i et enkelt update()-kall for รฅ endre flere felt samtidig, noe som holder oppdateringene presise og unngรฅr รฅ overskrive data du vil beholde.
Oppdatering av flere verdier
For รฅ sikre at flere/bulk dokumenter oppdateres samtidig i MongoDB du mรฅ bruke multi-alternativet fordi ellers som standard bare ett dokument endres om gangen.
Fรธlgende eksempel viser hvordan du oppdaterer mange dokumenter.
I dette eksemplet skal vi fรธrst finne dokumentet som har medarbeider-ID som "1" og endre medarbeidernavnet fra "Martin" til "NewMartin"
Trinn 1) Utfรธr oppdateringskommandoen
Trinn 2) Velg betingelsen du vil bruke for รฅ bestemme hvilket dokument som skal oppdateres. I vรฅrt eksempel รธnsker vi at dokumentet som har ansatt-ID-en "1" skal oppdateres.
Trinn 3) Velg hvilke feltnavn du vil endre og skriv inn deres nye verdi tilsvarende.
db.Employee.update ( { Employeeid : 1 }, { $set : { "EmployeeName" : "NewMartin", "Employeeid" : 22 } } )
Hvis kommandoen utfรธres vellykket og hvis du kjรธrer "finne" kommando for รฅ sรธke etter dokumentet med Employee id as 22 vil du se fรธlgende Output vil bli vist
Utgang:
Utdataene viser tydelig at รฉn post samsvarte med betingelsen, og derfor ble den relevante feltverdien endret.
Slik oppgraderer du et dokument i MongoDB
En upsert er en kombinasjon av update og insert. Nรฅr du aktiverer den, MongoDB oppdaterer dokumentet som samsvarer med betingelsen, eller setter inn et nytt dokument hvis det ikke finnes noen treff. Dette er nyttig nรฅr du ikke er sikker pรฅ om en post allerede finnes.
For รฅ utfรธre en upsert, legg til upsert-alternativet satt til true som det tredje argumentet i update():
db.Employee.update( {Employeeid: 5}, {$set: {EmployeeName: "Sofia"}}, {upsert: true} )
Her er hva som skjer:
- Hvis det finnes et dokument med ansatt-ID 5, MongoDB oppdaterer feltet Ansattnavn.
- Hvis det ikke finnes et slikt dokument, MongoDB setter inn et nytt dokument med ansatt-ID 5 og ansattnavnSofien".
Upserts er nyttige for tellere, innstillinger og enhver arbeidsflyt der du vil opprette en post ved fรธrste gangs bruk og oppdatere den etterpรฅ. I moderne MongoDB, den samme oppfรธrselen er tilgjengelig gjennom updateOne() og updateMany() ved รฅ sende {upsert: true} i alternativene. Vรฆr forsiktig med betingelsen, fordi et bredt filter kombinert med upsert kan opprette uventede dokumenter.
oppdaterEn() vs. oppdaterMange() vs. erstattEn()
Metoden update() er nรฅ en eldre kommando. Modern MongoDB Sjรฅfรธrene deler oppfรธrselen i tre tydeligere metoder. Tabellen nedenfor sammenligner dem:
| Metode | Hva det gjรธr | Dokumenter som er berรธrt |
|---|---|---|
| updateOne() | Bruker oppdateringsoperatorer pรฅ det fรธrste samsvarende dokumentet | En |
| oppdaterMange() | Bruker oppdateringsoperatorer pรฅ alle samsvarende dokumenter | Mange |
| erstattEn() | Erstatter hele det fรธrste samsvarende dokumentet med et nytt | En |
Bruk updateOne() for รฉn enkelt mรฅlrettet endring, updateMany() i stedet for det gamle flervalget, og replaceOne() nรฅr du vil bytte ut et helt dokument i stedet for รฅ redigere felt. Disse metodene returnerer et tydelig resultat som viser hvor mange dokumenter som samsvarte og hvor mange som ble endret, noe som gjรธr dem tryggere og enklere รฅ feilsรธke enn update().


