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.

  • โœ๏ธ update() Metod: Kommandot update() รคndrar fรคlt i dokument som matchar ett givet villkor.
  • ๐ŸŽฏ Matchningsvillkor: Det fรถrsta argumentet vรคljer vilka dokument som ska uppdateras, till exempel {Employeeid:1}.
  • ๐Ÿ”ง $set Operator: Operatorn $set tilldelar ett nytt vรคrde till ett fรคlt utan att ersรคtta hela dokumentet.
  • ๐Ÿ“š Uppdatera mรฅnga: Multi-alternativet, eller updateMany(), รคndrar alla dokument som matchar istรคllet fรถr bara ett.
  • โž• Uppรฅtgรฅende: Alternativet upsert infogar ett nytt dokument nรคr inget befintligt dokument matchar villkoret.
  • ๐Ÿ”„ Moderna metoder: updateOne(), updateMany() och replaceOne() รคr de nuvarande ersรคttningarna fรถr den fรถrรฅldrade update().

MongoDB Update() Dokument

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:

Grundlรคggande dokumentuppdateringar

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:

Uppdatering av flera vรคrden

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

Vanliga frรฅgor

Utan en uppdateringsoperator som $set, MongoDB ersรคtter hela det matchande dokumentet med det objekt du anger, och tar bort alla fรคlt som inte ingรฅr. Anvรคnd alltid $set fรถr att รคndra specifika fรคlt medan du behรฅllerping resten intakt.

Ja. Om fรคltet som namnges i $set saknas i det matchande dokumentet, MongoDB adderar det med det givna vรคrdet. Detta gรถr $set anvรคndbart fรถr bรฅde att uppdatera befintliga fรคlt och lรคgga till nya.

Anvรคnd findOneAndUpdate() med returnDocument-alternativet instรคllt pรฅ 'efter'. Det tillรคmpar รคndringen och returnerar det modifierade dokumentet i en enda atomoperation, vilket รคr anvรคndbart nรคr du behรถver de nya vรคrdena omedelbart.

AI kan omvandla en vanlig begรคran till ett update- eller updateMany-kommando med rรคtt villkor och operator, till exempel $set eller $inc, och fรถrklara varje del sรฅ att nybรถrjare undviker misstag.

Ja. AI kan flagga en uppdatering som utelรคmnar $set och ersรคtter hela dokument, varna nรคr ett filter matchar allt och fรถreslรฅ testning pรฅ en kopia innan den kรถrs i produktion.

Sammanfatta detta inlรคgg med: