MongoDB Zastąp i zastępstwo

MongoDB Zastąp i zastępstwo
Do zastąpienia wartości w bazie danych MongoDB zostaną użyte funkcje zastępcze () i. Istnieje tylko niewielka różnica w pracy obu operatorów. Metoda zastępcza służy do wymiany samotnego dokumentu, który pasuje do określonego filtra. Metoda przyjmuje trzy argumenty: filtr, dokument zastępczy i opcjonalny obiekt opcji. Podczas gdy metoda zastępcza jest używana do zastąpienia wszystkich dokumentów w kolekcji nowym zestawem dokumentów. Ta metoda jest zwykle stosowana do aktualizacji masowej i może być odpowiednia podczas przesyłania danych z jednego zbioru do drugiego. Metoda przyjmuje dwa argumenty: dokumenty zastępcze i opcjonalny obiekt opcji. W tym przewodniku omówimy użycie obu operatorów za pomocą przykładów.

Utwórz kolekcję

Począwszy od skorupy MongoDB, tworzymy nową kolekcję „manekin” w naszym MongoDB z pomocą poniższego polecenia: metoda CreateCollection ().

Test> db.CreateCollection („Manekin”)
OK: 1

Wstaw dokumenty

Czas dodać dokumenty do kolekcji MongoDB. W tym celu wykonano poniższe polecenie MongoDB, które wkłada wiele dokumentów do funkcji „manekina”: insertMany (). Dokumenty zawierają informacje o miastach, krajach i polu zliczania (z wartościami niektórych dokumentów). Każdy dokument w tablicy ma zestaw par kluczowych. Polecenie zwraca odpowiedź, że wstawienie jest potwierdzone.

Test> db.Atrapa.INSERTMANY ([City: „Texas”, kraj: „Anglia”, liczba: 5,
… City: „Los Angeles”, kraj: „Ameryka”, hrabia: 2, City: „Włochy”, kraj: „Francja”,
… Miasto: „Stambuł”, kraj: „Turcja”, hrabia: 8, City: „Delhi”, kraj: „Indie”, Count: 7])

Uznany: prawda,
InsertedIds:
„0”: ObjectID (”63C7B3588083BBF65D69684”),
„1”: ObjectID (”63C7B3588083BBF65D69685”),
„2”: ObjectID (”63C7B3588083BBF65D69686”),
„3”: ObjectID (”63C7B3588083BBF65D69687”),
„4”: ObjectID (”63C7B3588083BBF65D69688”)

Wyświetl dokumenty

Teraz, aby odzyskać i wyświetlić wszystkie dokumenty z kolekcji „manekina”, będziemy odrzucić metodę Find () w instrukcji pokazanej poniżej. Zwracane dokumenty są reprezentowane w formacie tablicy, z każdym rekordem w tablicy jako obiekt. Pola w każdym dokumencie obejmują „_id”, „miasto”, „kraj” i „liczba” i.mi. Pole „_id” to unikalny identyfikator przypisany przez MongoDB.

Test> db.Atrapa.znajdować()
[[[
_id: ObjectId („63C7B3588083BBF655D69684”), City: „Texas”, kraj: „Anglia”, liczba: 5,
_id: ObjectID („63C7B3588083BBF65D69685”), City: „Los Angeles”, kraj: „Ameryka”, liczba: 2,
_id: ObjectId („63C7B3588083BBF65D69686”), miasto: „Włochy”, kraj: „Francja”,
_id: ObjectID („63C7B3588083BBF65D69687”), City: „Stambul”, kraj: „Turcja”, liczba: 8,
_id: ObjectId („63C7B3588083BBF655D69688”), miasto: „Delhi”, kraj: „Indie”, Count: 7
]

Przykład 01: Metoda zastąpiona

Metoda zastępcza służy do wymiany pojedynczego dokumentu, który pasuje do określonego filtra w MongoDB. Dlatego będziemy go używać w poniższej instrukcji, aby zastąpić dokument w kolekcji „manekina”. Pierwszym argumentem przekazanym do metody zastępczej jest filtr. W takim przypadku filtr jest „miasto”: „Delhi”, co oznacza, że ​​dokument z polem „City” na „Delhi” zostanie wymieniony. Drugim argumentem przekazanym do metody zastępczej jest dokument zastępczy, który jest nowym dokumentem, który zastąpi stary: „kraj”: „India-Pacific”. Zatem dokument z dziedziną „City” na „Delhi” będzie teraz miał pole „krajowe” na „Indie-Pacific” zamiast jego poprzedniej wartości.

Kod jest owinięty w blok próbny, który służy do obsługi wszelkich błędów, które mogą wystąpić podczas wykonywania metody zastępczej. Jeśli wystąpi błąd, zostanie złapany przez blok połowowy i wydrukowany do konsoli za pomocą funkcji print (). Dane wyjściowe pokazuje, że jeden dokument został dopasowany, zmodyfikowany, a zwiększona liczba wynosi zero.

test> spróbuj
… DB.Atrapa.zamiennik („miasto”: „delhi”, „kraj”: „India-Pacific”);
… Catch (e) print (e);

potwierdzony: true, c7b3588083bbf655d69684 "),
Wstawka: NULL,
MatchedCount: 1 i ',
ModifiedCount: 1,
upsertedCount: 0

Po wyświetleniu wszystkich dokumentów z kolekcji „manekina” na powładzie za pomocą funkcji „Znajdź”, musimy wiedzieć, że 5th Record został zaktualizowany o „kraj:„ Indie-Pacific ””.

Test> db.Atrapa.znajdować()
[[[
_id: ObjectId („63C7B3588083BBF655D69684”), City: „Texas”, kraj: „Anglia”, liczba: 5,
_id: ObjectID („63C7B3588083BBF65D69685”), City: „Los Angeles”, kraj: „Ameryka”, liczba: 2,
_id: ObjectId („63C7B3588083BBF65D69686”), miasto: „Włochy”, kraj: „Francja”,
_id: ObjectID („63C7B3588083BBF65D69687”), City: „Stambul”, kraj: „Turcja”, liczba: 8,
_id: ObjectId („63C7B3588083BBF65D69688”), kraj: „India-Pacific”
]

Przykład nr 02: Zastąp metodę opcją Upsert

W tym przykładzie kodu będziemy korzystać z opcji upsert w metodzie zastępczej (), która dodaje nowy rekord, jeśli określony nie zostanie znaleziony. Dlatego kod, którego używamy poniżej. Pierwszym argumentem przekazanym metodowi zastępczej jest filtr „City”: „Mali”: dokument z polem „City” na „Mali” zostanie wymieniony. Drugim argumentem jest dokument zastępczy City: „Mali”, kraj: „Malediwy”, hrabia: 5. Pole „City” ustawione na „Mali” będzie miało teraz pola „Country” na „Malediwy” i „Count” na 5.

Trzecim argumentem przekazanym do metody zastępczej jest opcja upsert: true: wstawienie zupełnie nowego dokumentu, jeśli nie znaleziono. Kod jest ponownie zapakowany w blok próbny, aby wydrukować () błąd złapany w poleceniu. Wynik odpowiedzi pokazuje, że żadne dokumenty nie zostały dopasowane i zmodyfikowane, ale jeden dokument został podwyższony: Nowy dokument jest wstawiany, ponieważ dokument określony w filtrze nie istniał.

Test> Spróbuj db.Atrapa.zamiennik („City”: „Mali”,
… City: „Mali”, kraj: „Malediwy”, hrabia: 5, upsert: true);
… Catch (e) print (e);

Uznany: prawda,
InsertedId: ObjectID („63C7BFAAF8C41DF4B034B120”),
MatchedCount: 0,
ModifiedCount: 0,
upsertedCount: 1

Aby potwierdzić wprowadzenie jednego dodatkowego rekordu, wyświetliśmy całą kolekcję „manekina” i mamy wyniki pokazane poniżej. Opcja upsert na końcu włożyła nowy dokument.

Test> db.Atrapa.znajdować()
[[[
_id: ObjectId („63C7B3588083BBF655D69684”), City: „Texas”, kraj: „Anglia”, liczba: 5,
_id: ObjectID („63C7B3588083BBF65D69685”), City: „Los Angeles”, kraj: „Ameryka”, liczba: 2,
_id: ObjectId („63C7B3588083BBF65D69686”), miasto: „Włochy”, kraj: „Francja”,
_id: ObjectID („63C7B3588083BBF65D69687”), City: „Stambul”, kraj: „Turcja”, liczba: 8,
_id: ObjectId („63C7B3588083BBF655D69688”), miasto: „Delhi”, kraj: „Indie”, Count: 7
_id: ObjectID („63C7BFAAF8C41DF4B034B120”), City: „Mali”, kraj: „Maledives”, Count: 5
]

Przykład nr 03: Metoda zastępczaLL

Oto ilustracja o tym, jak pracuje operator zastępcy () w MongoDB. Wejście dla $ zastępcy operatora jest pole „krajowe” z dokumentów w kolekcji. Wartość „Znajdź” to „i”, a wartość wymiany to „E”. Oznacza to, że wszystkie wystąpienia litery „I” w polu „Country” zostaną zastąpione literą „E”. Rezultatem jest nowe pole „kraju” ze zmodyfikowanym ciągiem. Na przykład oryginalna wartość „India-Pacific” zostanie zastąpiona „Indea-PaceFec”, wartością „Ameryka” jest teraz „Amereca”, a „Malediwy” jest teraz „Maldeves”, jak pokazano również na wyjściu.

Test> db.Atrapa.agregate ([$ projekt: country: $ zamiennik: input: „$ country”, znajdź: „i”, zamiennik: „e”])))
[[[
_id: ObjectID („63C7B3588083BBF655D69684”), kraj: „Anglia”,
_ID: ObjectID („63C7B3588083BBF65D69685”), kraj: „Amereca”,
_ID: ObjectID („63C7B3588083BBF65D69686”), kraj: „Francja”,
_ID: ObjectId („63C7B3588083BBF65D69687”), country: „Turcja”,
_id: ObjectID („63C7B3588083BBF65D69688”), kraj: „Indea-Pacefec”,
_ID: ObjectID („63C7BFAAF8C41DF4B034B120”), kraj: „Maldeves”
]

Ponownie zaktualizujmy powyższą ilustrację. Argument „Znajdź” został przekazany o wartości „A”, a wartość wymiany to „*****”. Oznacza to, że wszystkie wystąpienia litery „A” w polu „City” zostaną zastąpione ciągiem „******”. Rezultatem jest nowe pole „miasta” ze zmodyfikowanym sznurkiem. Na przykład oryginalny „Teksas” zostałby zastąpiony „Tex ***** S”, a oryginalne „Włochy” zostaną zastąpione „it ***** ly” i tak dalej.

Test> db.Atrapa.agregate ([$ projekt: City: $ zamiennik: input: „$ mity”, znajdź: „a”, zamiennik: „******”]))
[[[
_ID: ObjectID („63C7B3588083BBF65D69684”), City: „Tex ****** s”,
_id: ObjectID („63C7B3588083BBF65D69685”), City: „Los Angeles”,
_ID: ObjectID („63C7B3588083BBF65D69686”), City: „It ****** ly”,
_ID: ObjectID („63C7B3588083BBF655D69687”), City: „IST ****** nbul”,
_ID: ObjectID („63C7B3588083BBF655D69688”), City: Null,
_ID: ObjectID („63C7BFAAF8C41DF4B034B120”), City: „M ****** Li”
]

Wniosek

Zdefiniowaliśmy funkcje zastępcze () i zamiennika () wraz z różnicą między nimi. Wyjaśniliśmy 3 z różnych przykładów w artykule I.mi. Metoda zamiennika () w celu aktualizacji pojedynczego pola, opcja upsert, którą należy zastosować w metodzie zastępczej, aby dodać nowy rekord, jeśli nie znaleziono pola pasującego i metody zastępczej () do zastąpienia ciągu we wszystkich dokumentach. Metoda zastępcza () bardzo różni się od metody zastępczej, jeśli chodzi o efekt, który dodaje do kolekcji bazy danych.