MongoDB Dokument Update() z przykładem
\
⚡ Inteligentne podsumowanie
MongoDB Operacje Update() modyfikują istniejące rekordy w kolekcji. Metoda update() przyjmuje warunek, aby wybrać dokumenty, oraz modyfikator, taki jak $set, aby zmienić wartości pól, a opcja multi aktualizuje kilka pasujących dokumentów jednocześnie.

Podstawowe aktualizacje dokumentów
MongoDB udostępnia polecenie update() umożliwiające aktualizację dokumentów kolekcji. Aby zaktualizować tylko te dokumenty, które chcesz zaktualizować, możesz dodać kryteria do instrukcji aktualizacji, tak aby aktualizowane były tylko wybrane dokumenty.
Podstawowe parametry w poleceniu to warunek dla którego należy dokonać aktualizacji dokumentu, a kolejnym jest modyfikacja, której należy dokonać.
Poniższy przykład pokazuje, jak to zrobić.
Krok 1) Wydaj polecenie aktualizacji
Krok 2) Wybierz warunek, na podstawie którego chcesz zdecydować, który dokument wymaga aktualizacji. W naszym przykładzie chcemy zaktualizować dokument o identyfikatorze pracownika 22.
Krok 3) Użyj polecenia set, aby zmodyfikować nazwę pola
Krok 4) Wybierz nazwę pola, którą chcesz zmodyfikować i odpowiednio wprowadź nową wartość.
db.Employee.update( {"Employeeid" : 1}, {$set: { "EmployeeName" : "NewMartin"}});
Jeśli polecenie zostanie wykonane pomyślnie, zostanie wyświetlony następujący komunikat wyjściowy
Wyjście:
Dane wyjściowe wyraźnie pokazują, że jeden rekord spełnił warunek i dlatego odpowiednia wartość pola została zmodyfikowana.
MongoDB Aktualizacja Operatorsy
Operator $set jest najczęstszym sposobem zmiany pola, ale MongoDB Oferuje kilka operatorów aktualizacji dla różnych potrzeb. Umieszcza się je w drugim argumencie funkcji update() obok lub zamiast $set:
- $zestaw: Ustawia wartość pola, a jeśli pole nie istnieje, tworzy je.
- $nieustawione: Usuwa pole całkowicie z dokumentu.
- $ink: Zwiększa lub zmniejsza pole liczbowe o podaną wartość.
- $mul: Mnoży wartość pola liczbowego.
- Zmień nazwę: Zmienia nazwę pola na nową nazwę.
- $pchnięcie: Dodaje wartość do pola tablicy.
- $pociągnięcie: Usuwa pasujące wartości z pola tablicowego.
Każdy operator dotyczy tylko wskazanych pól, pozostawiając resztę dokumentu bez zmian. Możesz połączyć kilka operatorów w jednym wywołaniu funkcji update(), aby zmodyfikować wiele pól jednocześnie, co zapewnia precyzję aktualizacji i zapobiega nadpisywaniu danych, które chcesz zachować.
Aktualizowanie wielu wartości
Aby mieć pewność, że wiele dokumentów jest aktualizowanych jednocześnie w MongoDB należy użyć opcji „multi”, ponieważ w przeciwnym razie domyślnie modyfikowany będzie tylko jeden dokument na raz.
Poniższy przykład pokazuje, jak aktualizować wiele dokumentów.
W tym przykładzie najpierw znajdziemy dokument, który ma identyfikator pracownika równy „1” i zmienimy nazwisko pracownika z „Martin” na „NewMartin”
Krok 1) Wydaj polecenie aktualizacji
Krok 2) Wybierz warunek, na podstawie którego chcesz zdecydować, który dokument wymaga aktualizacji. W naszym przykładzie chcemy, aby dokument, który ma identyfikator pracownika „1”, został zaktualizowany.
Krok 3) Wybierz nazwę pola, którą chcesz zmodyfikować i odpowiednio wprowadź jej nową wartość.
db.Employee.update ( { Employeeid : 1 }, { $set : { "EmployeeName" : "NewMartin", "Employeeid" : 22 } } )
Jeśli polecenie zostanie wykonane pomyślnie i jeśli uruchomisz plik "Znajdować" polecenie wyszukania dokumentu z identyfikatorem pracownika 22, zobaczysz następujący wynik
Wyjście:
Dane wyjściowe wyraźnie pokazują, że jeden rekord spełnił warunek i dlatego odpowiednia wartość pola została zmodyfikowana.
Jak wstawić dokument do MongoDB
Upsert to połączenie funkcji aktualizacji i wstawiania. Po włączeniu tej funkcji, MongoDB Aktualizuje dokument spełniający warunek lub wstawia nowy dokument, jeśli nie zostanie znaleziony żaden pasujący dokument. Jest to przydatne, gdy nie masz pewności, czy rekord już istnieje.
Aby wykonać operację upsert, należy dodać opcję upsert ustawioną na true jako trzeci argument funkcji update():
db.Employee.update( {Employeeid: 5}, {$set: {EmployeeName: "Sofia"}}, {upsert: true} )
Oto co się dzieje:
- Jeżeli istnieje dokument z identyfikatorem pracownika 5, MongoDB aktualizuje pole EmployeeName.
- Jeżeli taki dokument nie istnieje, MongoDB wstawia nowy dokument z identyfikatorem pracownika 5 i nazwą pracownika „Sofia”.
Wkładki są przydatne w przypadku liczników, ustawień i każdego procesu roboczego, w którym chcesz utworzyć rekord przy pierwszym użyciu i zaktualizować go później. W nowoczesnych MongoDBTo samo zachowanie jest dostępne poprzez updateOne() i updateMany() po przekazaniu {upsert: true} w opcjach. Należy zachować ostrożność z warunkiem, ponieważ szeroki filtr połączony z upsert może tworzyć nieoczekiwane dokumenty.
updateOne() vs updateMany() vs replaceOne()
Metoda update() jest teraz poleceniem starszej generacji. Nowoczesne MongoDB Kierowcy dzielą swoje zachowanie na trzy bardziej przejrzyste metody. Poniższa tabela je porównuje:
| Metoda wykonania | Co to robi | Dokumenty, których to dotyczy |
|---|---|---|
| aktualizacjaOne() | Stosuje operatory aktualizacji do pierwszego pasującego dokumentu | jeden |
| aktualizacjaWiele() | Stosuje operatory aktualizacji do każdego pasującego dokumentu | Wiele |
| replaceOne() | Zastępuje cały pierwszy pasujący dokument nowym | jeden |
Użyj updateOne() do pojedynczej zmiany docelowej, updateMany() zamiast starej opcji multi, a replaceOne(), gdy chcesz podmienić cały dokument zamiast edytować pola. Metody te zwracają przejrzysty wynik pokazujący, ile dokumentów zostało dopasowanych i zmodyfikowanych, co czyni je bezpieczniejszymi i łatwiejszymi do debugowania niż update().


