MongoDB Update() dokument s příkladem
\
⚡ Chytré shrnutí
MongoDB Operace s dokumenty metodou Update() upravují existující záznamy v kolekci. Metoda update() bere podmínku pro výběr dokumentů a modifikátor, například $set, pro změnu hodnot polí a volba multi aktualizuje několik odpovídajících dokumentů najednou.
Základní aktualizace dokumentů
MongoDB poskytuje příkaz update() pro aktualizaci dokumentů kolekce. Chcete-li aktualizovat pouze dokumenty, které chcete aktualizovat, můžete do prohlášení o aktualizaci přidat kritéria, aby byly aktualizovány pouze vybrané dokumenty.
Základní parametry v příkazu jsou podmínkou, pro kterou je třeba dokument aktualizovat, a další je úprava, kterou je potřeba provést.
Následující příklad ukazuje, jak to lze provést.
Krok 1) Zadejte příkaz update
Krok 2) Vyberte podmínku, kterou chcete použít k rozhodnutí, který dokument je třeba aktualizovat. V našem příkladu chceme aktualizovat dokument, který má id zaměstnance 22.
Krok 3) K úpravě názvu pole použijte příkaz set
Krok 4) Vyberte název pole, který chcete upravit, a zadejte novou hodnotu.
db.Employee.update( {"Employeeid" : 1}, {$set: { "EmployeeName" : "NewMartin"}});
Pokud je příkaz úspěšně proveden, zobrazí se následující výstup
Výstup:
Výstup jasně ukazuje, že jeden záznam odpovídal podmínce, a proto byla upravena hodnota příslušného pole.
MongoDB Aktualizace Operatorů
Operátor $set je nejběžnějším způsobem, jak změnit pole, ale MongoDB nabízí několik aktualizačních operátorů pro různé potřeby. Umístíte je do druhého argumentu funkce update() vedle nebo místo operátoru $set:
- $set: Nastaví hodnotu pole a vytvoří pole, pokud neexistuje.
- $unset: Úplně odstraní pole z dokumentu.
- $inc: Zvětší nebo zmenší číselné pole o zadanou hodnotu.
- $mul: Vynásobí hodnotu číselného pole.
- $přejmenovat: Přejmenuje pole na nový název.
- $push: Přidá hodnotu do pole pole.
- $pull: Odstraní odpovídající hodnoty z pole pole.
Každý operátor cílí pouze na pole, která pojmenujete, a zbytek dokumentu zůstává beze změny. Můžete kombinovat několik operátorů v jednom volání update() a upravit tak více polí najednou, což zajistí přesnost aktualizací a zabrání přepsání dat, která chcete zachovat.
Aktualizace více hodnot
Aby bylo zajištěno, že se více/hromadné dokumenty aktualizují současně MongoDB musíte použít možnost více, protože jinak se ve výchozím nastavení mění vždy pouze jeden dokument.
Následující příklad ukazuje, jak aktualizovat mnoho dokumentů.
V tomto příkladu nejprve najdeme dokument, který má id zaměstnance jako „1“ a změníme jméno zaměstnance z „Martin“ na „NewMartin“
Krok 1) Zadejte příkaz update
Krok 2) Vyberte podmínku, kterou chcete použít k rozhodnutí, který dokument je třeba aktualizovat. V našem příkladu chceme, aby byl aktualizován dokument, který má id zaměstnance „1“.
Krok 3) Vyberte, které názvy polí chcete upravit, a zadejte jejich novou hodnotu.
db.Employee.update ( { Employeeid : 1 }, { $set : { "EmployeeName" : "NewMartin", "Employeeid" : 22 } } )
Pokud je příkaz úspěšně proveden a pokud spustíte "nalézt" příkaz k vyhledání dokumentu s ID zaměstnance jako 22, uvidíte následující výstup
Výstup:
Výstup jasně ukazuje, že jeden záznam odpovídal podmínce, a proto byla upravena hodnota příslušného pole.
Jak uploadovat dokument v MongoDB
Upsert je kombinací aktualizace a insertu. Když ho povolíte, MongoDB aktualizuje dokument, který splňuje podmínku, nebo vloží nový dokument, pokud není nalezena žádná shoda. To je užitečné, když si nejste jisti, zda záznam již existuje.
Chcete-li provést upsert, přidejte volbu upsert nastavenou na true jako třetí argument funkce update():
db.Employee.update( {Employeeid: 5}, {$set: {EmployeeName: "Sofia"}}, {upsert: true} )
Zde se děje:
- Pokud existuje dokument s EmployeeID 5, MongoDB aktualizuje pole EmployeeName.
- Pokud takový dokument neexistuje, MongoDB vloží nový dokument s Employeeid 5 a EmployeeName “Sofina".
Upserty jsou užitečné pro čítače, nastavení a jakýkoli pracovní postup, kde chcete vytvořit záznam při prvním použití a poté jej aktualizovat. V moderním MongoDBStejné chování je k dispozici prostřednictvím funkcí updateOne() a updateMany() zadáním parametru {upsert: true} v možnostech. S touto podmínkou buďte opatrní, protože široký filtr v kombinaci s funkcí upsert může vytvořit neočekávané dokumenty.
updateOne() vs. updateMany() vs. replaceOne()
Metoda update() je nyní starším příkazem. Moderní MongoDB Ovladače rozdělují jeho chování do tří přehlednějších metod. Níže uvedená tabulka je porovnává:
| Metoda | Co to dělá | Dotčené dokumenty |
|---|---|---|
| updateOne() | Použije operátory aktualizace na první odpovídající dokument. | Jedna |
| updateMany() | Aplikuje operátory aktualizace na každý odpovídající dokument. | Mnoho |
| nahraditJeden() | Nahradí celý první odpovídající dokument novým. | Jedna |
Pro jednu cílenou změnu použijte updateOne(), pro updateMany() místo staré volby multi a replaceOne() pokud chcete vyměnit celý dokument, nikoli pouze pole pro úpravy. Tyto metody vracejí jasný výsledek ukazující, kolik dokumentů se shodovalo a kolik jich bylo upraveno, což je činí bezpečnějšími a snadněji laditelnými než update().



