MongoDB Update() Dokument med exempel
\
โก Smart sammanfattning
MongoDB Update() Dokumentรฅtgรคrder modifierar befintliga poster i en samling. Metoden update() anvรคnder ett villkor fรถr att vรคlja dokument och en modifierare som $set fรถr att รคndra fรคltvรคrden, och multi-alternativet uppdaterar flera matchande dokument samtidigt.

Grundlรคggande dokumentuppdateringar
MongoDB tillhandahรฅller kommandot update() fรถr att uppdatera dokumenten i en samling. Fรถr att bara uppdatera de dokument du vill uppdatera kan du lรคgga till ett kriterium i uppdateringssatsen sรฅ att endast valda dokument uppdateras.
De grundlรคggande parametrarna i kommandot รคr ett villkor fรถr vilket dokument som behรถver uppdateras, och nรคsta รคr modifieringen som mรฅste utfรถras.
Fรถljande exempel visar hur detta kan gรถras.
Steg 1) Utfรคrda uppdateringskommandot
Steg 2) Vรคlj det villkor som du vill anvรคnda fรถr att bestรคmma vilket dokument som ska uppdateras. I vรฅrt exempel vill vi uppdatera dokumentet som har medarbetar-id 22.
Steg 3) Anvรคnd kommandot set fรถr att รคndra fรคltnamnet
Steg 4) Vรคlj vilket fรคltnamn du vill รคndra och ange det nya vรคrdet dรคrefter.
db.Employee.update( {"Employeeid" : 1}, {$set: { "EmployeeName" : "NewMartin"}});
Om kommandot utfรถrs framgรฅngsrikt kommer fรถljande utdata att visas
Produktion:
Utdata visar tydligt att en post matchade villkoret och dรคrfรถr รคndrades det relevanta fรคltvรคrdet.
MongoDB Uppdatering Operatorer
Operatorn $set รคr det vanligaste sรคttet att รคndra ett fรคlt, men MongoDB tillhandahรฅller flera uppdateringsoperatorer fรถr olika behov. Du placerar dem i det andra argumentet i update() bredvid eller istรคllet fรถr $set:
- $set: Anger vรคrdet fรถr ett fรคlt och skapar fรคltet om det inte finns.
- $unset: Tar bort ett fรคlt helt frรฅn dokumentet.
- $inc: รkar eller minskar ett numeriskt fรคlt med ett givet belopp.
- $mul: Multiplicerar vรคrdet av ett numeriskt fรคlt.
- $byt namn: Byter namn pรฅ ett fรคlt till ett nytt namn.
- $push: Lรคgger till ett vรคrde i ett arrayfรคlt.
- $pull: Tar bort matchande vรคrden frรฅn ett arrayfรคlt.
Varje operator riktar sig endast mot de fรคlt du namnger, vilket lรคmnar resten av dokumentet ofรถrรคndrat. Du kan kombinera flera operatorer i ett enda update()-anrop fรถr att รคndra flera fรคlt samtidigt, vilket hรฅller uppdateringarna exakta och undviker att skriva รถver data som du vill behรฅlla.
Uppdatering av flera vรคrden
Fรถr att sรคkerstรคlla att flera/bulkdokument uppdateras samtidigt i MongoDB du mรฅste anvรคnda multialternativet eftersom annars som standard bara ett dokument รคndras รฅt gรฅngen.
Fรถljande exempel visar hur man uppdaterar mรฅnga dokument.
I det hรคr exemplet ska vi fรถrst hitta dokumentet som har medarbetar-id som "1" och รคndra anstรคllds namn frรฅn "Martin" till "NewMartin"
Steg 1) Utfรคrda uppdateringskommandot
Steg 2) Vรคlj det villkor som du vill anvรคnda fรถr att bestรคmma vilket dokument som ska uppdateras. I vรฅrt exempel vill vi att dokumentet som har medarbetar-id "1" ska uppdateras.
Steg 3) Vรคlj vilka fรคltnamn du vill รคndra och ange deras nya vรคrde dรคrefter.
db.Employee.update ( { Employeeid : 1 }, { $set : { "EmployeeName" : "NewMartin", "Employeeid" : 22 } } )
Om kommandot kรถrs framgรฅngsrikt och om du kรถr "hitta" kommandot fรถr att sรถka efter dokumentet med Employee id as 22 kommer du att se fรถljande Output kommer att visas
Produktion:
Utdata visar tydligt att en post matchade villkoret och dรคrfรถr รคndrades det relevanta fรคltvรคrdet.
Hur man uppgraderar ett dokument i MongoDB
En upsert รคr en kombination av update och insert. Nรคr du aktiverar den, MongoDB uppdaterar dokumentet som matchar villkoret, eller infogar ett nytt dokument om ingen matchning hittas. Detta รคr anvรคndbart nรคr du รคr osรคker pรฅ om en post redan finns.
Fรถr att utfรถra en upsert, lรคgg till upsert-alternativet satt till true som det tredje argumentet i update():
db.Employee.update( {Employeeid: 5}, {$set: {EmployeeName: "Sofia"}}, {upsert: true} )
Hรคr รคr vad som hรคnder:
- Om ett dokument med EmployeeID 5 finns, MongoDB uppdaterar fรคltet EmployeeName.
- Om inget sรฅdant dokument finns, MongoDB infogar ett nytt dokument med Anstรคllds-ID 5 och Anstรคlldsnamn โSofia ".
Upserts รคr praktiska fรถr rรคknare, instรคllningar och alla arbetsflรถden dรคr du vill skapa en post vid fรถrsta anvรคndningen och uppdatera den efterรฅt. I moderna MongoDB, samma beteende รคr tillgรคngligt via updateOne() och updateMany() genom att skicka {upsert: true} i alternativen. Var fรถrsiktig med villkoret, eftersom ett brett filter i kombination med upsert kan skapa ovรคntade dokument.
uppdateraEn() vs uppdateraMany() vs ersรคttEn()
Metoden update() รคr nu ett รคldre kommando. MongoDB Fรถrarna delar upp dess beteende i tre tydligare metoder. Tabellen nedan jรคmfรถr dem:
| Metod | Vad den gรถr | Berรถrda dokument |
|---|---|---|
| updateOne() | Tillรคmpar uppdateringsoperatorer pรฅ det fรถrsta matchande dokumentet | One |
| uppdateraMรฅnga() | Tillรคmpar uppdateringsoperatorer pรฅ alla matchande dokument | Mรฅnga |
| ersรคttEn() | Ersรคtter hela det fรถrsta matchande dokumentet med ett nytt | One |
Anvรคnd updateOne() fรถr en enskild riktad รคndring, updateMany() istรคllet fรถr det gamla multialternativet och replaceOne() nรคr du vill byta ut ett helt dokument istรคllet fรถr att redigera fรคlt. Dessa metoder returnerar ett tydligt resultat som visar hur mรฅnga dokument som matchade och hur mรฅnga som รคndrades, vilket gรถr dem sรคkrare och enklare att felsรถka รคn update().


