MongoDB Update() dokument koos näitega

\

⚡ Nutikas kokkuvõte

MongoDB Update() Dokumenditoimingud muudavad kollektsioonis olemasolevaid kirjeid. Meetod update() võtab tingimuse dokumentide valimiseks ja modifikaatori, näiteks $set, väljaväärtuste muutmiseks ning mitmikvalik uuendab korraga mitut vastavat dokumenti.

  • ✏️ uuenda() meetod: Käsk update() muudab dokumentides välju, mis vastavad antud tingimusele.
  • 🎯 Matši tingimus: Esimene argument valib, milliseid dokumente uuendada, näiteks {Employeeid:1}.
  • 🔧 $set Operator: Operaator $set määrab väljale uue väärtuse ilma kogu dokumenti asendamata.
  • 📚 Värskenda paljusid: Mitmekordne valik ehk updateMany() muudab kõiki sobivaid dokumente, mitte ainult ühte.
  • Ülestõus: Valik upsert lisab uue dokumendi, kui ükski olemasolev dokument ei vasta tingimusele.
  • 🔄 Kaasaegsed meetodid: updateOne(), updateMany() ja replaceOne() on aegunud update() praegused asendajad.

MongoDB Värskenda() dokumenti

Põhidokumentide uuendused

MongoDB pakub kogu dokumentide värskendamiseks käsku update(). Ainult värskendatavate dokumentide värskendamiseks saate värskendusavaldusele lisada kriteeriumid, nii et värskendatakse ainult valitud dokumente.

Käsu põhiparameetrid on tingimus, mille jaoks dokumenti tuleb värskendada, ja järgmine on muudatus, mida tuleb teha.

Järgmine näide näitab, kuidas seda teha.

Step 1) Andke värskenduskäsk välja

Step 2) Valige tingimus, mida soovite kasutada, et otsustada, millist dokumenti on vaja värskendada. Meie näites soovime värskendada dokumenti, mille töötaja ID on 22.

Step 3) Kasutage välja nime muutmiseks käsku set

Step 4) Valige, millist välja nime soovite muuta, ja sisestage vastavalt uus väärtus.

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

Kui käsk on edukalt täidetud, kuvatakse järgmine väljund

Väljund:

Põhidokumentide uuendused

Väljund näitab selgelt, et üks kirje vastas tingimusele ja seega muudeti vastavat välja väärtust.

MongoDB Värskendused Operatorse

$set operaator on kõige levinum viis välja muutmiseks, aga MongoDB pakub erinevate vajaduste jaoks mitmeid uuendamise operaatoreid. Need paigutatakse update() teise argumenti $set kõrvale või asemele:

  • $komplekt: Määrab välja väärtuse ja loob välja, kui seda pole olemas.
  • $unset: Eemaldab dokumendist välja täielikult.
  • $kaasa arvatud: Suurendab või vähendab numbrilist välja antud koguse võrra.
  • $mul: Korrutab numbrilise välja väärtuse.
  • $ümbernimetamine: Nimetab välja ümber.
  • $tõukamine: Lisab massiiviväljale väärtuse.
  • $tõmba: Eemaldab massiiviväljalt vastavad väärtused.

Iga operaator on suunatud ainult nimetatud väljadele, jättes ülejäänud dokumendi muutmata. Mitme välja korraga muutmiseks saate ühe update() kutsungiga kombineerida mitu operaatorit, mis hoiab värskendused täpsed ja väldib soovitud andmete ülekirjutamist.

Mitme väärtuse värskendamine

Tagamaks, et mitut/hulgidokumenti värskendataks samaaegselt MongoDB peate kasutama multivalikut, sest muidu muudetakse vaikimisi korraga ainult ühte dokumenti.

Järgmine näide näitab, kuidas värskendada paljusid dokumente.

Selles näites leiame esmalt dokumendi, mille töötaja ID on "1", ja muudame töötaja nime "Martin" asemel "NewMartin".

Step 1) Andke värskenduskäsk välja

Step 2) Valige tingimus, mida soovite kasutada, et otsustada, millist dokumenti on vaja värskendada. Meie näites soovime, et dokumenti, mille töötaja ID on "1", värskendataks.

Step 3) Valige, milliseid väljanimesid soovite muuta, ja sisestage vastavalt nende uus väärtus.

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

Kui käsk on edukalt täidetud ja kui käivitate "leida" käsk, et otsida dokumenti, mille töötaja ID on 22, kuvatakse järgmine väljund

Väljund:

Mitme väärtuse värskendamine

Väljund näitab selgelt, et üks kirje vastas tingimusele ja seega muudeti vastavat välja väärtust.

Kuidas dokumenti üles laadida MongoDB

Upsert on uuendamise ja sisestamise kombinatsioon. Kui te selle lubate, MongoDB uuendab tingimusele vastavat dokumenti või lisab uue dokumendi, kui vastet ei leita. See on kasulik, kui te pole kindel, kas kirje on juba olemas.

Upserti tegemiseks lisage upserti valik, mis on seatud väärtusele true, funktsiooni update() kolmanda argumendina:

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

Siin on see, mis juhtub:

  • Kui töötaja ID-ga 5 dokument on olemas, MongoDB uuendab oma EmployeeName välja.
  • Kui sellist dokumenti ei ole olemas, MongoDB lisab uue dokumendi, mille töötaja ID on 5 ja töötajaNimi on „Sofia ".

Upsertid on käepärased loendurite, sätete ja mis tahes töövoo jaoks, kus soovite esmakordsel kasutamisel kirje luua ja seda hiljem uuendada. Tänapäevases MongoDB, sama käitumine on saadaval ka funktsioonide updateOne() ja updateMany() kaudu, edastades valikutes {upsert: true}. Olge tingimusega ettevaatlik, sest lai filter koos funktsiooniga upsert võib luua ootamatuid dokumente.

uuendaÜks() vs uuendaMany() vs asendaÜks()

Meetod update() on nüüd pärandkäsk. Moodne MongoDB Juhid jagavad selle käitumise kolmeks selgemaks meetodiks. Allolev tabel võrdleb neid:

Meetod Mida see teeb Mõjutatud dokumendid
updateOne() Rakendab esimesele sobivale dokumendile värskendusoperaatoreid Üks
updateMany() Rakendab värskendusoperaatoreid igale sobivale dokumendile Palju
asendaÜks() Asendab kogu esimese sobiva dokumendi uuega Üks

Ühe sihitud muudatuse korral kasuta funktsiooni updateOne(), vana mitme valiku asemel funktsiooni updateMany() ja kui soovid väljade muutmise asemel terve dokumendi välja vahetada, siis funktsiooni replaceOne(). Need meetodid tagastavad selge tulemuse, mis näitab, mitu dokumenti sobisid ja kui palju muudeti, mis muudab need turvalisemaks ja silumise lihtsamaks kui funktsiooni update().

KKK

Ilma värskendusoperaatorita nagu $set MongoDB asendab kogu sobiva dokumendi teie antud objektiga, kustutades kõik mittesisalduvad väljad. Kasutage konkreetsete väljade muutmiseks alati funktsiooni $set, samal ajal kui keeping ülejäänu tervena.

Jah. Kui $set-is nimetatud väli vastavast dokumendist puudub, MongoDB liidab selle antud väärtusega. See teeb $set funktsiooni kasulikuks nii olemasolevate väljade värskendamiseks kui ka uute lisamiseks.

Kasutage funktsiooni findOneAndUpdate() koos returnDocument valikuga 'after'. See rakendab muudatuse ja tagastab muudetud dokumendi ühe aatomioperatsiooniga, mis on kasulik, kui vajate uusi väärtusi kohe.

Tehisintellekt suudab õige tingimuse ja operaatori (nt $set või $inc) abil tavalise päringu muuta käsuks „update” või „updateMany” ning iga osa selgitada, et algajad vigu ei väldiks.

Jah. Tehisintellekt saab märgistada värskenduse, mis jätab $set'i vahele ja asendaks terved dokumendid, hoiatada, kui filter leiab kõigele vaste, ja soovitada enne koopia käivitamist seda tootmiskeskkonnas testida.

Võta see postitus kokku järgmiselt: