Czym jest metoda „db.collection.updateOne()” w MongoDB?
„ db.collection.updateOne() ” aktualizuje pojedynczy dokument spełniający zdefiniowane kryteria. Jeśli więcej niż jeden dokument spełnia kryteria, zmodyfikowany zostanie tylko pierwszy dokument. Może być używany z operatorami aktualizacji, takimi jak „ $ustaw ”, „ $inc ' I wiele więcej .
Jak korzystać z metody „db.collection.updateOne()” w MongoDB?
„ db.collection.updateOne() ” można wykorzystać do aktualizacji pojedynczego pola, jak również wielu pól jednego dokumentu spełniających kryteria wyboru. Co więcej, ta metoda może również dodać pole do dokumentu i może być używana z operatorami aktualizacji. Składnia „ db.collection.updateOne() ” przedstawiono poniżej:
Podstawowa składnia
db.collection.updateOne ( { kryteria_filtra } , { aktualizacja } , { opcje } )
Tutaj w powyższej składni:
- Ta metoda zaktualizuje pierwszy dokument spełniający kryteria wyboru
- „ kryteria_filtra ” określa kryteria aktualizacji
- „ aktualizacja ” zawiera pola, które zostaną zmodyfikowane w dokumencie
- „ opcje ” argument jest opcjonalnym argumentem, który modyfikuje działanie tej metody, na przykład „ wstawić ' I ' wskazówka ”
W tym poście użyjemy „ Linuxhint_Col2 „dokumenty kolekcji w celu wykazania działania” db.collection.updateOne() ' metoda. Aby wyświetlić dokumenty przechowywane w tej kolekcji, wykonaj podane polecenie:
db.Linuxhint_Col2.find ( )
Wyjście
Dane wyjściowe pobrały wszystkie dokumenty przechowywane w „ Linuxhint_Col2 ' kolekcja.
Przykład 1: Zaktualizuj pojedyncze pole
Aby zaktualizować pojedyncze pole w dokumencie, zdefiniuj kryteria wyboru i zaktualizuj kryteria. Kryteria aktualizacji można zdefiniować za pomocą operatorów aktualizacji. Uruchommy zapytanie, aby zaktualizować „ Opłata za modelowanie „ pole do „ 18000 ' gdzie ' Nazwisko „obiekt równa się” Dep ” w dokumencie:
Wyjście
Dane wyjściowe zwróciły komunikat o powodzeniu.
Aby zweryfikować wprowadzone zmiany, pobierz dokument, którego dotyczy problem, korzystając z tego „ znajdować() ' Komenda:
db.Linuxhint_Col2.find ( { „Model_Nazwa.Nazwisko” : 'Depp' } ) Wyjście
Dane wyjściowe potwierdziły, że dokument został pomyślnie zaktualizowany.
Przykład 2: Dodaj nowe pole przy użyciu metody „db.collection.updateOne()”.
„ db.collection.updateOne() ” dodaje nowe pole za pomocą metody „ $ustaw ” w dokumencie, jeśli jeszcze nie istnieje. jako „ Doświadczenie ” nie istnieje dla dokumentów, w których „ Opłata za modelowanie ' jest mniej niż ' 9000 ”.
Dodajmy nowe pole „ Doświadczenie ” o wartości „ Początkujący ” w dokumencie, w którym „ Opłata za modelowanie ' jest mniej niż ' 9000 ” używając tego zapytania:
db.Linuxhint_Col2.updateOne ( { „Opłata za modelowanie” : { $lt : 9000 } } , { $ustaw : { 'Doświadczenie' : 'Początkujący' } } ) Wyjście
Dane wyjściowe zwracają komunikat wskazujący, że jeden dokument spełnia kryteria wyboru i został pomyślnie zmodyfikowany.
Zweryfikujmy to, pobierając wszystkie dokumenty dostępne w zbiorze” Linuxhint_Col2 ”:
db.Linuxhint_Col2.find ( ) Wyjście
Dane wyjściowe pokazują, że jeden dokument spełniający warunek został zmodyfikowany, a nowe pole zostało pomyślnie wstawione.
Przykład 3: Aktualizacja wielu pól dokumentu przy użyciu metody „db.collection.updateOne()”
Użytkownik może nawet modyfikować wiele pól w jednym dokumencie. Tutaj to zapytanie podane poniżej zmodyfikuje nazwisko i wiek dokumentu, w którym „ Imię ' równa się ' Noe „:
Wyjście
Zapytanie zostało wykonane bez żadnych błędów.
Aby zweryfikować zmiany, użyj metody „find()” w celu pobrania dokumentu, w którym znajduje się „ Imię ' równa się ' Noe :
db.Linuxhint_Col2.find ( { „Model_Nazwa.Imię” : „Noe” } ) Wyjście
Dane wyjściowe pomyślnie zwróciły zmodyfikowany dokument.
Przykład 4: Użyj metody „db.collection.updateOne()” z operatorami aktualizacji
Podobnie jak w poprzednim przykładzie, użyliśmy „ $ustaw ” operator aktualizacji, aby zmodyfikować wartości w „ db.collection.updateOne() ' metoda. Spróbujmy użyć innego operatora aktualizacji „ $inc ”, który zwiększa pole o określoną wartość.
Tutaj w zapytaniu podanym poniżej metoda wyszukuje dokument, w którym „ Imię ' równa się ' Kate ” i dodaje „ 1000 ' w ' Opłata za modelowanie ”wartość pola:
db.Linuxhint_Col2.updateOne ( { „Model_Nazwa.Imię” : 'Kate' } , { $inc : { Opłata za modelowanie: 1000 } } ) Wyjście
Dane wyjściowe zwróciły komunikat o powodzeniu.
Aby zobaczyć zmiany, użyj opcji „ znajdować() ”, aby pobrać dokument, którego dotyczy problem:
db.Linuxhint_Col2.find ( { „Model_Nazwa.Imię” : 'Kate' } ) Wyjście
Dane wyjściowe przedstawiają zmodyfikowaną wartość „ Opłata za modelowanie ”.
Przykład 5: Dodaj nowy dokument, jeśli jeszcze nie istnieje, używając argumentu „upsert”.
Opcjonalny argument może służyć do zmiany zachowania tej metody. Jedną z takich opcji jest „ wstawić ”, która dodaje nowy dokument, jeśli żaden już istniejący dokument nie spełnia kryteriów wyboru zdefiniowanych w zapytaniu.
Spróbujmy dodać nowy dokument, definiując kryteria wyboru, które nie spełniają żadnych już istniejących dokumentów. Następnie ustaw dla niego kilka pól i dodaj opcję „ wstawić ” jako „true”, jak pokazano w poleceniu podanym poniżej:
db.Linuxhint_Col2.updateOne ( { „Model_Nazwa.Imię” : „Dawid” } , { $ustaw : { Opłata za modelowanie: 10000 , Model_Wiek: 23 , „Model_Nazwa.Nazwisko” : 'Kowal' } } , { wstaw: PRAWDA } ) Wyjście
Dane wyjściowe pokazały, że potwierdzony komunikat jest prawdziwy.
Na koniec sprawdź jego modyfikację, uruchamiając to polecenie:
db.Linuxhint_Col2.find ( { „Model_Nazwa.Imię” : „Dawid” } ) Wyjście
Dane wyjściowe wskazują, że nowy dokument został pomyślnie dodany.
Wniosek
„ db.collection.updateOne() ” w MongoDB służy do aktualizacji pierwszego dokumentu spełniającego kryteria wyboru. Może modyfikować jedno lub wiele pól w dokumencie za pomocą operatorów aktualizacji, takich jak „ $ustaw ' I ' $inc ”. Co więcej, ta metoda akceptuje również opcjonalne argumenty, aby zmienić zachowanie metody, takie jak „ wstawić ”, który dodaje nowy dokument w przypadku, gdy kryteria wyboru nie pasują do żadnego istniejącego dokumentu. W tym poście omówiono użycie „ db.collection.updateOne() ” w MongoDB.