MongoDB Update() dokumentum példával
\
⚡ Okos összefoglaló
MongoDB Az Update() metódus dokumentumműveletek egy gyűjtemény meglévő rekordjait módosítják. Az update() metódus egy feltételt fogad el a dokumentumok kiválasztásához, és egy módosítót, például a $set-et a mezőértékek módosításához, a multi opció pedig több egyező dokumentumot frissít egyszerre.

Alapvető dokumentumfrissítések
MongoDB az update() parancsot biztosítja egy gyűjtemény dokumentumainak frissítéséhez. Ha csak a frissíteni kívánt dokumentumokat szeretné frissíteni, a frissítési utasításhoz feltételeket adhat hozzá, így csak a kiválasztott dokumentumok kerülnek frissítésre.
A parancs alapvető paraméterei egy feltétel, amelyhez a dokumentumot frissíteni kell, a következő pedig az elvégzendő módosítás.
A következő példa bemutatja, hogyan lehet ezt megtenni.
Step 1) Adja ki a frissítési parancsot
Step 2) Válassza ki a feltételt, amellyel eldöntheti, hogy melyik dokumentumot kell frissíteni. Példánkban frissíteni szeretnénk a 22-es alkalmazotti azonosítóval rendelkező dokumentumot.
Step 3) A set paranccsal módosítsa a mező nevét
Step 4) Válassza ki a módosítani kívánt mező nevét, és ennek megfelelően adja meg az új értéket.
db.Employee.update( {"Employeeid" : 1}, {$set: { "EmployeeName" : "NewMartin"}});
Ha a parancs sikeresen végrehajtásra került, a következő kimenet jelenik meg
output:
A kimenet egyértelműen mutatja, hogy egy rekord megfelelt a feltételnek, és így a vonatkozó mezőérték módosult.
MongoDB Frissítések Operatorzok
A $set operátor a leggyakoribb módja egy mező módosításának, de MongoDB Számos frissítési operátort kínál a különböző igényekhez. Ezeket az update() második argumentumában helyezzük el a $set mellett vagy helyett:
- $set: Beállítja egy mező értékét, és létrehozza a mezőt, ha az nem létezik.
- $unset: Teljesen eltávolít egy mezőt a dokumentumból.
- $inc: Egy adott értékkel növeli vagy csökkenti a numerikus mező tartalmát.
- $mul: Megszorozza egy numerikus mező értékét.
- $átnevezés: Átnevezi a mezőt egy új névre.
- $push: Értéket ad hozzá egy tömbmezőhöz.
- $pull: Eltávolítja az egyező értékeket egy tömbmezőből.
Minden operátor csak a megnevezett mezőket célozza meg, a dokumentum többi részét változatlanul hagyva. Több operátort kombinálhatsz egyetlen update() hívásban, hogy egyszerre több mezőt módosíts, ami pontos frissítéseket biztosít, és elkerüli a megtartani kívánt adatok felülírását.
Több érték frissítése
Annak biztosítása érdekében, hogy több/tömeges dokumentum egyidejűleg frissüljön MongoDB a több opciót kell használnia, mert egyébként alapértelmezés szerint egyszerre csak egy dokumentum módosul.
A következő példa bemutatja, hogyan frissíthet sok dokumentumot.
Ebben a példában először megkeressük azt a dokumentumot, amelynek az alkalmazotti azonosítója „1”, és az alkalmazott nevét „Martin”-ról „NewMartin”-ra módosítjuk.
Step 1) Adja ki a frissítési parancsot
Step 2) Válassza ki a feltételt, amellyel eldöntheti, hogy melyik dokumentumot kell frissíteni. Példánkban azt a dokumentumot szeretnénk frissíteni, amelynek alkalmazotti azonosítója „1”.
Step 3) Válassza ki a módosítani kívánt mezőneveket, és ennek megfelelően adja meg az új értéküket.
db.Employee.update ( { Employeeid : 1 }, { $set : { "EmployeeName" : "NewMartin", "Employeeid" : 22 } } )
Ha a parancs sikeresen végrehajtásra került, és ha futtatja a "megtalálja" paranccsal megkeresheti a 22-es alkalmazotti azonosítójú dokumentumot, akkor a következő kimenet jelenik meg
output:
A kimenet egyértelműen mutatja, hogy egy rekord megfelelt a feltételnek, és így a vonatkozó mezőérték módosult.
Hogyan lehet egy dokumentumot Upsert-elni a MongoDB
Az upsert az update és az insert kombinációja. Amikor engedélyezed, MongoDB frissíti a feltételnek megfelelő dokumentumot, vagy új dokumentumot szúr be, ha nem talál egyezést. Ez akkor hasznos, ha nem biztos benne, hogy létezik-e már egy rekord.
Upsert végrehajtásához add hozzá az upsert opciót igaz értékre állítva az update() harmadik argumentumaként:
db.Employee.update( {Employeeid: 5}, {$set: {EmployeeName: "Sofia"}}, {upsert: true} )
Itt van, mi történik:
- Ha létezik egy 5-ös Employeeid azonosítójú dokumentum, MongoDB frissíti az AlkalmazottNév mezőt.
- Ha ilyen dokumentum nem létezik, MongoDB beszúr egy új dokumentumot, amelynek alkalmazotti azonosítója 5, alkalmazotti neve pedig „Sofia".
Az Upsertek hasznosak számlálóknál, beállításoknál és minden olyan munkafolyamatnál, ahol az első használatkor létre szeretne hozni egy rekordot, majd később frissíteni szeretné azt. Modern MongoDBUgyanez a viselkedés érhető el az updateOne() és updateMany() függvénnyel is, ha az {upsert: true} paramétert adjuk meg az opciókban. Legyen óvatos a feltétellel, mert egy széles szűrő és az upsert kombinálása váratlan dokumentumokat hozhat létre.
updateOne() vs. updateMany() vs. replaceOne()
Az update() metódus mostantól egy hagyományos parancs. Modern MongoDB A sofőrök három egyértelműbb módszerre osztják a viselkedését. Az alábbi táblázat összehasonlítja ezeket:
| Módszer | Mit csinál | Érintett dokumentumok |
|---|---|---|
| updateOne() | Frissítési operátorokat alkalmaz az első egyező dokumentumra | egy |
| updateMany() | Frissítési operátorokat alkalmaz minden egyező dokumentumra | Sok |
| replaceOne() | A teljes első egyező dokumentumot egy újra cseréli | egy |
Használd az updateOne() metódust egyetlen célzott módosításhoz, az updateMany() metódust a régi többszörös opció helyett, és a replaceOne() metódust, ha egy egész dokumentumot szeretnél cserélni a mezők szerkesztése helyett. Ezek a metódusok egyértelmű eredményt adnak vissza, amely megmutatja, hogy hány dokumentum egyezett meg és hány módosult, ami biztonságosabbá és könnyebben hibakereshetővé teszi őket, mint az update() metódus.


