MongoDB Päivitä()-dokumentti esimerkillä

\

⚡ Älykäs yhteenveto

MongoDB Update() Dokumenttioperaatiot muokkaavat kokoelman olemassa olevia tietueita. update()-metodi ottaa ehdon dokumenttien valitsemiseksi ja muokkaajan, kuten $set, kenttäarvojen muuttamiseksi, ja multi-optio päivittää useita vastaavia dokumentteja kerralla.

  • ✏️ päivitys()-metodi: update()-komento muuttaa annettua ehtoa vastaavien dokumenttien kenttiä.
  • 🎯 Ottelun ehto: Ensimmäinen argumentti valitsee päivitettävät asiakirjat, kuten {Employeeid:1}.
  • 🔧 $set Operator: $set-operaattori antaa kentälle uuden arvon korvaamatta koko dokumenttia.
  • 📚 Päivitä useita: Multi-optio eli updateMany() muokkaa kaikkia vastaavia dokumentteja yhden sijaan.
  • Ylöspäin: Upsert-vaihtoehto lisää uuden asiakirjan, kun mikään olemassa oleva asiakirja ei vastaa ehtoa.
  • 🔄 Nykyaikaiset menetelmät: updateOne(), updateMany() ja replaceOne() korvaavat nykyisiä funktioita vanhentuneelle update()-funktiolle.

MongoDB Päivitä() asiakirja

Perusasiakirjapäivitykset

MongoDB tarjoaa update()-komennon kokoelman asiakirjojen päivittämiseksi. Jos haluat päivittää vain päivitettävät asiakirjat, voit lisätä päivityskäskyyn ehdot, jotta vain valitut asiakirjat päivitetään.

Komennon perusparametrit ovat ehto, jota varten dokumentti on päivitettävä, ja seuraava on muutos, joka on suoritettava.

Seuraava esimerkki osoittaa, kuinka tämä voidaan tehdä.

Vaihe 1) Anna päivityskomento

Vaihe 2) Valitse ehto, jonka avulla haluat päättää, mikä asiakirja on päivitettävä. Esimerkissämme haluamme päivittää asiakirjan, jonka työntekijätunnus on 22.

Vaihe 3) Käytä set-komentoa muuttaaksesi kentän nimeä

Vaihe 4) Valitse, mitä kentän nimeä haluat muokata, ja syötä uusi arvo sen mukaisesti.

db.Employee.update(
{"Employeeid" : 1},
{$set: { "EmployeeName" : "NewMartin"}});

Jos komento suoritetaan onnistuneesti, seuraava Output näytetään

lähtö:

Perusasiakirjapäivitykset

Tulos osoittaa selvästi, että yksi tietue vastasi ehtoa ja siten asianmukaista kentän arvoa muutettiin.

MongoDB Päivitykset OperaTors

$set-operaattori on yleisin tapa muuttaa kenttää, mutta MongoDB tarjoaa useita päivitysoperaattoreita eri tarpeisiin. Ne sijoitetaan update()-funktion toiseen argumenttiin $set-operaattorin rinnalle tai sen sijaan:

  • $set: Asettaa kentän arvon ja luo kentän, jos sitä ei ole olemassa.
  • $unset: Poistaa kentän dokumentista kokonaan.
  • $inc: Suurentaa tai pienentää numeerista kenttää annetun määrän verran.
  • $mul: Kertoo numeerisen kentän arvon.
  • $nimeä uudelleen: Nimeää kentän uudelleen uudella nimellä.
  • $push: Lisää arvon taulukkokenttään.
  • $pull: Poistaa vastaavat arvot taulukkokentästä.

Jokainen operaattori kohdistuu vain nimeämiisi kenttiin, jolloin muu dokumentti pysyy muuttumattomana. Voit yhdistää useita operaattoreita yhteen update()-kutsuun muokataksesi useita kenttiä kerralla, mikä pitää päivitykset tarkkoina ja välttää säilytettävien tietojen päällekirjoittamisen.

Päivitetään useita arvoja

Sen varmistamiseksi, että useita/joukkoasiakirjoja päivitetään samanaikaisesti MongoDB sinun on käytettävä monivaihtoehtoa, koska muuten oletusarvoisesti vain yhtä asiakirjaa muokataan kerrallaan.

Seuraava esimerkki näyttää kuinka päivitetään useita asiakirjoja.

Tässä esimerkissä etsimme ensin asiakirjan, jonka työntekijätunnus on "1", ja muutamme työntekijän nimen "Martin" arvoksi "NewMartin".

Vaihe 1) Anna päivityskomento

Vaihe 2) Valitse ehto, jonka avulla haluat päättää, mikä asiakirja on päivitettävä. Esimerkissämme haluamme, että asiakirja, jonka työntekijätunnus on "1", päivitetään.

Vaihe 3) Valitse, mitä kenttien nimiä haluat muokata ja anna niiden uusi arvo vastaavasti.

db.Employee.update
(
	{
		Employeeid : 1
	},
	{
		$set :
		{
			"EmployeeName" : "NewMartin",
			"Employeeid" : 22
		}
	}
)

Jos komento suoritetaan onnistuneesti ja jos suoritat "Löytö" -komento hakeaksesi asiakirjaa, jonka työntekijätunnus on 22, näet seuraavan tulosteen

lähtö:

Päivitetään useita arvoja

Tulos osoittaa selvästi, että yksi tietue vastasi ehtoa ja siten asianmukaista kentän arvoa muutettiin.

Dokumentin lisääminen ylätasolle MongoDB

Upsert on päivityksen ja lisäyksen yhdistelmä. Kun otat sen käyttöön, MongoDB päivittää ehtoa vastaavan asiakirjan tai lisää uuden asiakirjan, jos vastinetta ei löydy. Tästä on hyötyä, kun et ole varma, onko tietue jo olemassa.

Suorittaaksesi upsertin, lisää upsert-asetus, jonka arvoksi on asetettu true, update()-funktion kolmanneksi argumentiksi:

db.Employee.update(
  {Employeeid: 5},
  {$set: {EmployeeName: "Sofia"}},
  {upsert: true}
)

Tässä on mitä tapahtuu:

  • Jos Employeeid 5 -dokumentti on olemassa, MongoDB päivittää TyöntekijänNimi-kentän.
  • Jos tällaista asiakirjaa ei ole olemassa, MongoDB lisää uuden asiakirjan, jonka työntekijätunnus on 5 ja työntekijännimi “Sofia ".

Upsertit ovat käteviä laskureille, asetuksille ja kaikille työnkuluille, joissa haluat luoda tietueen ensimmäisellä käyttökerralla ja päivittää sen jälkeen. Nykyaikaisessa MongoDBSama toiminto on käytettävissä updateOne()- ja updateMany()-funktioiden kautta välittämällä asetuksissa {upsert: true}. Ole varovainen ehdon kanssa, koska laaja suodatin yhdistettynä upsert-funktioon voi luoda odottamattomia dokumentteja.

päivitäYksi() vs. päivitäMany() vs. korvaaYksi()

update()-metodi on nyt vanha komento. Moderni MongoDB kuljettajat jakavat sen toiminnan kolmeen selkeämpään menetelmään. Alla oleva taulukko vertailee niitä:

Menetelmä Mitä se tekee Asiakirjat, joihin tämä vaikuttaa
updateOne() Käyttää päivitysoperaattoreita ensimmäiseen vastaavaan dokumenttiin yksi
päivitä monta() Käyttää päivitysoperaattoreita kaikkiin vastaaviin dokumentteihin Paljon
korvaaYksi() Korvaa koko ensimmäisen vastaavan asiakirjan uudella yksi

Käytä updateOne()-metodia yksittäiseen kohdennettuun muutokseen, updateMany()-metodia vanhan multi-vaihtoehdon sijaan ja replaceOne()-metodia, kun haluat vaihtaa koko dokumentin kenttien muokkaamisen sijaan. Nämä metodit palauttavat selkeän tuloksen, joka näyttää kuinka monta dokumenttia täsmäsi ja kuinka montaa muokattiin, mikä tekee niistä turvallisempia ja helpompia virheenkorjata kuin update().

UKK

Ilman päivitysoperaattoria, kuten $set, MongoDB korvaa koko vastaavan dokumentin antamallasi objektilla ja poistaa kaikki puuttuvat kentät. Käytä aina $set-ominaisuutta muuttaaksesi tiettyjä kenttiä, kun taas keepping loput ehjinä.

Kyllä. Jos $set-muuttujassa nimetty kenttä puuttuu vastaavasta dokumentista, MongoDB lisää siihen annetun arvon. Tämä tekee $set-funktiosta hyödyllisen sekä olemassa olevien kenttien päivittämiseen että uusien kenttien lisäämiseen.

Käytä findOneAndUpdate()-funktiota ja aseta returnDocument-asetukseksi 'after'. Se ottaa muutoksen käyttöön ja palauttaa muokatun dokumentin yhdellä atomaarisella operaatiolla, mikä on hyödyllistä, kun tarvitset uudet arvot välittömästi.

Tekoäly voi muuttaa tavallisen pyynnön update- tai updateMany-komennoksi oikealla ehdolla ja operaattorilla, kuten $set tai $inc, ja selittää jokaisen osan aloittelijoiden välttämiseksi virheistä.

Kyllä. Tekoäly voi merkitä päivityksen, josta puuttuu $set ja joka korvaisi kokonaiset dokumentit, varoittaa, kun suodatin vastaa kaikkea, ja ehdottaa testausta kopion kanssa ennen sen suorittamista tuotannossa.

Tiivistä tämä viesti seuraavasti: