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.

  • โœ๏ธ update() Metode: Kommandoen update() รฆndrer felter i dokumenter, der opfylder en given betingelse.
  • ๐ŸŽฏ Matchbetingelse: Det fรธrste argument vรฆlger, hvilke dokumenter der skal opdateres, f.eks. {Employeeid:1}.
  • ๐Ÿ”ง $sรฆt Operator: Operatoren $set tildeler en ny vรฆrdi til et felt uden at erstatte hele dokumentet.
  • ๐Ÿ“š Opdater mange: Multi-indstillingen, eller updateMany(), รฆndrer alle dokumenter, der matcher, i stedet for kun รฉt.
  • โž• Opsving: Upsert-indstillingen indsรฆtter et nyt dokument, nรฅr intet eksisterende dokument matcher betingelsen.
  • ๐Ÿ”„ Moderne metoder: updateOne(), updateMany() og replaceOne() er de nuvรฆrende erstatninger for den forรฆldede update().

MongoDB Update() Dokument

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:

Grundlรฆggende dokumentopdateringer

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:

Opdatering af flere vรฆrdier

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

Ofte Stillede Spรธrgsmรฅl

Uden en opdateringsoperator som $set, MongoDB erstatter hele det matchende dokument med det objekt, du angiver, og sletter alle felter, der ikke er inkluderet. Brug altid $set til at รฆndre specifikke felter, mens du holderping resten intakt.

Ja. Hvis feltet navngivet i $set mangler i det matchende dokument, MongoDB lรฆgger den sammen med den givne vรฆrdi. Dette gรธr $set nyttig til bรฅde at opdatere eksisterende felter og tilfรธje nye.

Brug findOneAndUpdate() med returnDocument-indstillingen indstillet til 'efter'. Den anvender รฆndringen og returnerer det รฆndrede dokument i รฉn atomoperation, hvilket er nyttigt, nรฅr du har brug for de nye vรฆrdier med det samme.

AI kan omdanne en almindelig anmodning til en update- eller updateMany-kommando med den rigtige betingelse og operator, sรฅsom $set eller $inc, og forklare hver del, sรฅ begyndere undgรฅr fejl.

Ja. AI kan markere en opdatering, der udelader $set og erstatter hele dokumenter, advare, nรฅr et filter matcher alt, og foreslรฅ test pรฅ en kopi, fรธr den kรธres i produktion.

Opsummer dette indlรฆg med: