MongoDB Update() Dokument med eksempel
\
โก Smart opsummering
MongoDB Update() Dokumenthandlinger รฆndrer eksisterende poster i en samling. Metoden update() bruger en betingelse for at vรฆlge dokumenter og en modifikator, f.eks. $set, for at รฆndre feltvรฆrdier, og multi-indstillingen opdaterer flere matchende dokumenter pรฅ รฉn gang.

Grundlรฆggende dokumentopdateringer
MongoDB giver kommandoen update() til at opdatere dokumenterne i en samling. For kun at opdatere de dokumenter, du รธnsker at opdatere, kan du tilfรธje et kriterium til opdateringserklรฆringen, sรฅ kun udvalgte dokumenter opdateres.
De grundlรฆggende parametre i kommandoen er en betingelse, for hvilket dokument skal opdateres, og den nรฆste er den modifikation, der skal udfรธres.
Fรธlgende eksempel viser, hvordan dette kan gรธres.
Trin 1) Udsted opdateringskommandoen
Trin 2) Vรฆlg den betingelse, du vil bruge til at beslutte, hvilket dokument der skal opdateres. I vores eksempel รธnsker vi at opdatere dokumentet, som har medarbejder-id 22.
Trin 3) Brug kommandoen set til at รฆndre feltnavnet
Trin 4) Vรฆlg hvilket feltnavn du vil รฆndre, og indtast den nye vรฆrdi i overensstemmelse hermed.
db.Employee.update( {"Employeeid" : 1}, {$set: { "EmployeeName" : "NewMartin"}});
Hvis kommandoen udfรธres med succes, vil fรธlgende output blive vist
Output:
Outputtet viser tydeligt, at รฉn post matchede betingelsen, og derfor blev den relevante feltvรฆrdi รฆndret.
MongoDB Opdatering Operatorer
Operatoren $set er den mest almindelige mรฅde at รฆndre et felt pรฅ, men MongoDB indeholder adskillige opdateringsoperatorer til forskellige behov. Du placerer dem i det andet argument i update() ved siden af โโeller i stedet for $set:
- $set: Angiver vรฆrdien af โโet felt og opretter feltet, hvis det ikke findes.
- $unset: Fjerner et felt helt fra dokumentet.
- $inc: รger eller mindsker et numerisk felt med en given mรฆngde.
- $mul: Multiplicerer vรฆrdien af โโet numerisk felt.
- $omdรธb: Omdรธber et felt til et nyt navn.
- $push: Tilfรธjer en vรฆrdi til et arrayfelt.
- $pull: Fjerner matchende vรฆrdier fra et arrayfelt.
Hver operator er kun rettet mod de felter, du navngiver, og resten af โโdokumentet forbliver uรฆndret. Du kan kombinere flere operatorer i et enkelt update()-kald for at รฆndre flere felter pรฅ รฉn gang, hvilket holder opdateringer prรฆcise og undgรฅr at overskrive data, du vil beholde.
Opdatering af flere vรฆrdier
For at sikre, at flere/massedokumenter opdateres pรฅ samme tid i MongoDB du skal bruge multi-indstillingen, fordi ellers som standard kun รฉt dokument รฆndres ad gangen.
Fรธlgende eksempel viser, hvordan man opdaterer mange dokumenter.
I dette eksempel skal vi fรธrst finde det dokument, som har medarbejder-id'et som "1" og รฆndre medarbejdernavnet fra "Martin" til "NewMartin"
Trin 1) Udsted opdateringskommandoen
Trin 2) Vรฆlg den betingelse, du vil bruge til at beslutte, hvilket dokument der skal opdateres. I vores eksempel รธnsker vi, at dokumentet, som har medarbejder-id'et "1", skal opdateres.
Trin 3) Vรฆlg hvilke feltnavne du vil รฆndre, og indtast deres nye vรฆrdi i overensstemmelse hermed.
db.Employee.update ( { Employeeid : 1 }, { $set : { "EmployeeName" : "NewMartin", "Employeeid" : 22 } } )
Hvis kommandoen udfรธres med succes, og hvis du kรธrer "finde" kommando for at sรธge efter dokumentet med medarbejder-id som 22 vil du se fรธlgende output vil blive vist
Output:
Outputtet viser tydeligt, at รฉn post matchede betingelsen, og derfor blev den relevante feltvรฆrdi รฆndret.
Sรฅdan opgraderer du et dokument i MongoDB
En upsert er en kombination af update og insert. Nรฅr du aktiverer den, MongoDB opdaterer det dokument, der matcher betingelsen, eller indsรฆtter et nyt dokument, hvis der ikke findes noget match. Dette er nyttigt, nรฅr du ikke er sikker pรฅ, om en post allerede findes.
For at udfรธre en upsert skal du tilfรธje upsert-indstillingen sat til true som det tredje argument i update():
db.Employee.update( {Employeeid: 5}, {$set: {EmployeeName: "Sofia"}}, {upsert: true} )
Her er hvad der sker:
- Hvis der findes et dokument med medarbejderid 5, MongoDB opdaterer feltet Medarbejdernavn.
- Hvis et sรฅdant dokument ikke findes, MongoDB indsรฆtter et nyt dokument med Medarbejder-id 5 og Medarbejdernavn โSofien ".
Upserts er praktiske til tรฆllere, indstillinger og enhver arbejdsgang, hvor du vil oprette en post ved fรธrste brug og opdatere den bagefter. I moderne MongoDB, den samme funktion er tilgรฆngelig via updateOne() og updateMany() ved at bruge {upsert: true} i indstillingerne. Vรฆr forsigtig med betingelsen, da et bredt filter kombineret med upsert kan oprette uventede dokumenter.
updateOne() vs. updateMany() vs. replaceOne()
Metoden update() er nu en รฆldre kommando. Moderne MongoDB Fรธrere opdeler dens adfรฆrd i tre tydeligere metoder. Tabellen nedenfor sammenligner dem:
| Metode | Hvad gรธr den | Berรธrte dokumenter |
|---|---|---|
| updateOne() | Anvender opdateringsoperatorer pรฅ det fรธrste matchende dokument | รn |
| updateMany() | Anvender opdateringsoperatorer pรฅ alle matchende dokumenter | Mange |
| erstatEn() | Erstatter hele det fรธrste matchende dokument med et nyt | รn |
Brug updateOne() til en enkelt mรฅlrettet รฆndring, updateMany() i stedet for den gamle multi-indstilling, og replaceOne(), nรฅr du vil udskifte et helt dokument i stedet for at redigere felter. Disse metoder returnerer et tydeligt resultat, der viser, hvor mange dokumenter der matchede, og hvor mange der blev รฆndret, hvilket gรธr dem sikrere og nemmere at fejlsรธge end update().


