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.

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


