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.

  • โœ๏ธ oppdater()-metode: Kommandoen update() endrer felt i dokumenter som samsvarer med en gitt betingelse.
  • ๐ŸŽฏ Kampbetingelse: Det fรธrste argumentet velger hvilke dokumenter som skal oppdateres, for eksempel {Employeeid:1}.
  • ๐Ÿ”ง $sett Operator: Operatoren $set tilordner en ny verdi til et felt uten รฅ erstatte hele dokumentet.
  • ๐Ÿ“š Oppdater mange: Multi-alternativet, eller updateMany(), endrer alle dokumenter som samsvarer i stedet for bare ett.
  • โž• Oppsving: Upsert-alternativet setter inn et nytt dokument nรฅr ingen eksisterende dokumenter samsvarer med betingelsen.
  • ๐Ÿ”„ Moderne metoder: updateOne(), updateMany() og replaceOne() er de nรฅvรฆrende erstatningene for den utdaterte update().

MongoDB Oppdater() dokument

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:

Grunnleggende dokumentoppdateringer

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:

Oppdatering av flere verdier

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

Spรธrsmรฅl og svar

Uten en oppdateringsoperator som $set, MongoDB erstatter hele det samsvarende dokumentet med objektet du oppgir, og sletter eventuelle felt som ikke er inkludert. Bruk alltid $set for รฅ endre spesifikke felt mens du holderping resten intakt.

Ja. Hvis feltet navngitt i $set mangler i det samsvarende dokumentet, MongoDB legger den til med den gitte verdien. Dette gjรธr $set nyttig for bรฅde รฅ oppdatere eksisterende felt og legge til nye.

Bruk findOneAndUpdate() med returnDocument-alternativet satt til ยซetterยป. Dette bruker endringen og returnerer det endrede dokumentet i รฉn atomoperasjon, noe som er nyttig nรฅr du trenger de nye verdiene umiddelbart.

AI kan gjรธre en vanlig forespรธrsel om til en update- eller updateMany-kommando med riktig betingelse og operator, for eksempel $set eller $inc, og forklare hver del slik at nybegynnere unngรฅr feil.

Ja. AI kan flagge en oppdatering som utelater $set og som vil erstatte hele dokumenter, advare nรฅr et filter samsvarer med alt, og foreslรฅ testing pรฅ en kopi fรธr den kjรธres i produksjon.

Oppsummer dette innlegget med: