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.

  • ✏️ Metoda update(): Polecenie update() zmienia pola w dokumentach, które spełniają określony warunek.
  • 🎯 Warunek dopasowania: Pierwszy argument wybiera dokumenty, które mają zostać zaktualizowane, na przykład {Employeeid:1}.
  • 🔧 $ustaw Operasłup: Operator $set przypisuje nową wartość do pola bez zastępowania całego dokumentu.
  • 📚 Aktualizacja Wiele: Opcja multi, czyli updateMany(), modyfikuje każdy pasujący dokument, a nie tylko jeden.
  • Upsert: Opcja upsert wstawia nowy dokument, jeżeli żaden istniejący dokument nie spełnia warunku.
  • 🔄 Nowoczesne metody: updateOne(), updateMany() i replaceOne() to obecne zamienniki przestarzałej funkcji update().

MongoDB Aktualizuj() dokument

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:

Podstawowe aktualizacje dokumentów

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:

Aktualizowanie wielu wartości

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

FAQ

Bez operatora aktualizacji takiego jak $set, MongoDB Zastępuje cały dopasowany dokument podanym obiektem, usuwając wszystkie pola, które nie zostały uwzględnione. Zawsze używaj $set do zmiany konkretnych pól podczas zapisywania.ping reszta nienaruszona.

Tak. Jeśli pole o nazwie $set nie występuje w dopasowanym dokumencie, MongoDB Dodaje go z podaną wartością. Dzięki temu $set jest przydatny zarówno do aktualizowania istniejących pól, jak i dodawania nowych.

Użyj funkcji findOneAndUpdate() z opcją returnDocument ustawioną na „after”. Zastosuje ona zmianę i zwróci zmodyfikowany dokument w jednej operacji atomowej, co jest przydatne, gdy potrzebujesz nowych wartości natychmiast.

Sztuczna inteligencja może przekształcić proste żądanie w polecenie update lub updateMany z odpowiednim warunkiem i operatorem, takim jak $set lub $inc, i wyjaśnić każdą część, aby początkujący uniknęli błędów.

Tak. Sztuczna inteligencja może oznaczyć aktualizację, która pomija $set i zastąpiłaby całe dokumenty, ostrzegać, gdy filtr pasuje do wszystkiego, i sugerować przetestowanie jej na kopii przed uruchomieniem w środowisku produkcyjnym.

Podsumuj ten post następująco: