MongoDB $ operator podzielony

MongoDB $ operator podzielony

Słowo podzielone odnosi się do podziału określonego pola lub podziału jednego łańcucha na dwa lub więcej podkładów. Podzielony operator MongoDB pracuje nad tworzeniem podłoży dla konkretnego pola dowolnego kolekcji, która znajduje się w bazie danych MongoDB. Podobnie jak używamy koncepcji podzbioru należącego do konkretnego zestawu w matematyce, podjazdy utworzone przez podzielonego operatora należą do jednego konkretnego rekordu pola. W tym przewodniku MongoDB omówimy użycie podzielonego operatora MongoDB do podziału wartości określonego pola na dwa lub więcej podłoża za pomocą delimiter.

Przykład 01:

Aby rozpocząć z MongoDB, powinniśmy skonfigurować nowy schemat w jego bazie danych. W MongoDB schemat można generować przy użyciu kolekcji. Dlatego powinieneś mieć skonfigurowane MongoDB Compass i MongoDB Shell. Po pierwsze, potrzebujesz kolekcji w swojej bazie danych, która zostanie wykorzystana do zastosowania podzielonego operatora. Dlatego tworzymy jedno „dane” z funkcją „CreateCollection”, wykorzystując kolekcję „Dane”.

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

Rozpoczynamy pierwszą ilustrację od wstawienia rekordów do zbioru „danych”. Dlatego funkcja MongoDB's InsertMany () została tutaj użyta do wstawienia 5 rekordów w kolekcji. Każdy z tych rekordów ma 3 pola: id, nazwa i addate. Potwierdzenie wyjściowe pokazuje, że rekordy są z powodzeniem wstawiane do gromadzenia danych.

Test> db.Dane.InsertMany ([id: 1, nazwa: „Joe”, addate: „dec-22-2020”,
… Id: 2, nazwa: „Peter”, addate: „listopada 14-2021”,
… Id: 3, nazwa: „Nina”, addate: „listopada 14-2018”,
… Id: 4, nazwa: „Misha”, addate: „Jan-14-2022”,
… Id: 5, nazwa: „Elen”, addate: „SEP-4-2021”]))
potwierdzony: prawda,
InsertedIds:
„0”: ObjectID (”63BD2D8E01632FD3C02AB8D3”),
„1”: ObjectID (”63BD2D8E01632FD3C02AB8D4”),
„2”: ObjectID (”63BD2D8E01632FD3C02AB8D5”),
„3”: ObjectID (”63BD2D8E01632FD3C02AB8D6”),
„4”: ObjectID (”63BD2D8E01632FD3C02AB8D7”)

Teraz, gdy rekordy w gromadzeniu danych są wstawiane w formie dokumentów, wyświetlimy je w konsoli MongoDB w formacie JSON. Zatem funkcja Find () byłaby tutaj bardzo pomocna. Użycie funkcji FINK () wraz z funkcją foreach () przyjmując „printJSON” jako argument wyświetla rekordy, jak pokazuje wyjście.

Test> db.Dane.znajdować().Foreach (printJson)
_ID: ObjectID („63BD2D8E01632FD3C02AB8D3”), ID: 1, Nazwa: „Joe”, Admdate: „DEC-22-2020”
_ID: ObjectID („63BD2D8E01632FD3C02AB8D4”), ID: 2, Nazwa: „Peter”, Admdate: „listopada 14-2021”
_ID: ObjectID („63BD2D8E01632FD3C02AB8D5”), ID: 3, Nazwa: „Nina”, Admdate: 'listopada 14-2018'
_ID: ObjectID („63BD2D8E01632FD3C02AB8D6”), ID: 4, Nazwa: „Misha”, Admdate: „Jan-14-2022”
_ID: ObjectID („63BD2D8E01632FD3C02AB8D7”), ID: 5, Nazwa: „Elen”, Admdate: „SEP-4-2021”

Na tej ilustracji mamy pole „Admatate”, które zawiera postać „-” między miesiącem, dniem i rokiem. Będziemy używać postaci „-„ ”do podzielenia pola admDate na podjazdy. Aby korzystać z operatora podzielonego, powinniśmy odrzucić funkcję agregowaną MongoDB wraz z nazwą kolekcji, która jest „danymi”. Ta funkcja zaczyna się od operatora „$ Match”, który jest tutaj używany do określania rekordu za pomocą jednego z jego pól: id: 2 Określa rekord 2.

Następnie odrzucamy operatora projektu, aby wykorzystać podzielony operator na polu „Addate” gromadzenia danych, aby podzielić pole na 3 podjazd, przyjmując postać „-„. Pole „Nazwa” zostanie wyświetlone tak, jak jest, podczas gdy pole addate pola zostanie zastąpione nowym tytułem „data”. Wyjście wykonania tej instrukcji pokazuje pole nazwy 2Nd nagrywać taką, jaka jest. Tytuł pola AdmDate jest aktualizowany jako „data”, a jego wartość została podzielona na trzy podjazdy za pomocą ogranicznika „-” i wyświetlana w tablicy.

Test> db.Dane.agregate ([$ match: id: 2, $ projekt: nazwa: 1, data: $ split: ["$ admdate", "-"]])
[_id: ObjectID („63BD2D8E01632FD3C02AB8D4”), Nazwa: „Peter”, data: [„nov”, „14”, „2021”]]

Korzystanie z podzielonego operatora aktualizuje tylko wynik czasu wykonania bez wpływu na rzeczywisty rekord w kolekcji bazy danych. Ilustracja tej koncepcji została wyświetlona z instrukcją funkcji Find () i jej wyjściem do gromadzenia danych w załączonym fragmencie kodu. Pole „AddDate” było takie samo przed użyciem podzielonego operatora.

Test> db.Dane.Znajdź (id: 2)
[_ID: ObjectID („63BD2D8E01632FD3C02AB8D4”), ID: 2, Nazwa: „Peter”, Admdate: 'listopada 14-2021']]

Przykład 02:

W powyższym przykładzie widzieliśmy, w jaki sposób operator podziału można użyć do podziału rekordu pola na 2 lub więcej podkładów bez aktualizacji oryginalnych rekordów. Aby dodać zaktualizowane pole (zawierają podkład) w kolekcji, powinniśmy odlewać operatora scalania wraz z operatorem podzielonym. Pamiętaj, aby oddzielić operator scalania (zastosowany w kolekcji „danych”) od operatora podzielonego (zastosowanego na polu addate). To zapytanie nie zwraca nic w zamian, ponieważ aktualizowało oryginalne rekordy kolekcji „Dane” bez wyświetlania niczego w skorupce MongoDB.

Test> db.Dane.agregate ([$ projekt: dateinfo: $ split: [„$ admdate”, „-”],
… $ Merge: „Data”])

Korzystając z operatora scalania w naszej powyższej instrukcji, aby pluć pola addate, mamy poniższe dane wyjściowe.

Test> db.Dane.znajdować()
[_ID: ObjectID („63BD2D8E01632FD3C02AB8D3”), ID: 1, Nazwa: „Joe”, Admdate: „DEC-22-2020”, DATIINFO: ['dec', „22 ',„ 2020 ”],
_ID: ObjectID („63BD2D8E01632FD3C02AB8D4”), ID: 2, Nazwa: „Peter”, Admdate: „listopada-14-2021”, dateinfo: ['nov', „14”, „2021”],
_ID: ObjectID („63BD2D8E01632FD3C02AB8D5”), ID: 3, Nazwa: „Nina”, Admdate: „listopada-14-2018”, dateinfo: [„nov”, „14”, „2018”],
_ID: ObjectID („63BD2D8E01632FD3C02AB8D6”), ID: 4, Nazwa: „Misha”, Admdate: „Jan-14-2022”, dateinfo: [„Jan”, „14”, „2022”],
_ID: ObjectID („63BD2D8E01632FD3C02AB8D7”), ID: 5, Nazwa: „elen”, admdate: „SEP-4-2021”, dateinfo: ['sep', '4', '2021']]

Przykład 03:

Utwórzmy nową kolekcję o nazwie „osoba” w tej samej bazie danych do użycia dla naszej nowej ilustracji. CreateCollection () zostanie odrzucony z nazwą kolekcji w jej parametrze.

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

Teraz, gdy kolekcja jest tworzona i pusta, musimy dodać do niej dokumenty. Ponieważ zamierzamy dodać więcej niż 1 rekord w kolekcji „osoby”, powinniśmy używać funkcji InsertMany (). 5 rekordów trzeba było dodać, a każde z nich zawiera 2 pola: id i nazwa. Będziemy używać pola nazwy dla operatora podzielonego, aby podzielić jego ciąg na podjazd.

Test> db.Osoba.insertMany ([id: 1, nazwa: "lia asif", id: 2, nazwa: "joly bieli", id: 3, nazwa: "eden szacie", id: 4, nazwa: " William Robert Patinson ", id: 5, nazwa:„ Justin p trudo ”])
potwierdzony: prawda,
InsertedIds:
„0”: ObjectID (”63BD33E401632FD3C02AB8E1”),
„1”: ObjectID (”63BD33E401632FD3C02AB8E2”),
„2”: ObjectID (”63BD33E401632FD3C02AB8E3”),
„3”: ObjectID (”63BD33E401632FD3C02AB8E4”),
„4”: ObjectID (”63BD33E401632FD3C02AB8E5”)

Po pomyślnym dodaniu tych 5 rekordów do kolekcji „Osoba” za pomocą funkcji MongoDB insertMY (. Wyjście tej prostej instrukcji pokazuje 5 rekordów kolekcji osoby z unikalnymi identyfikatorami.

Test> db.Osoba.znajdować()
[_ID: ObjectID („63BD33E401632FD3C02AB8E1”), ID: 1, Nazwa: „Lia Asif”,
_ID: ObjectID („63BD33E401632FD3C02AB8E2”), ID: 2, Nazwa: „Joly Woe”,
_ID: ObjectID („63BD33E401632FD3C02AB8E3”), ID: 3, Nazwa: „Edeen Robe”,
_id: ObjectID („63BD33E401632FD3C02AB8E4”), ID: 4, Nazwa: „William Robert Patinson”,
_ID: ObjectID („63BD33E401632FD3C02AB8E5”), ID: 5, Nazwa: „Justin P Treudo”]

Jak wspomnieliśmy wcześniej, będziemy wykorzystywać pole nazwy, aby lepiej zrozumieć podzielony operator. Dlatego oto funkcja łączna ponownie wraz z operatorem projektu. Tym razem zamierzamy podzielić pole nazwy z pojedynczą przestrzenią pomiędzy podjazdami jego wartości. Tytuł pola „Nazwa” zostanie zastąpiona „tytuł”. Po ustawieniu tego zapytania uruchomiliśmy je w skorupce MongoDB i pokazuje dzielone wartości pola nazwy w tablicy „Tytuł” ​​dla wszystkich rekordów i.mi. Jedna nazwa została podzielona na 2 lub więcej podłoża.

Test> db.Osoba.agregate ([$ projekt: tytuł: $ split: [„$ name”, „”]])))
[_id: ObjectId („63BD33E401632FD3C02AB8E1”), Tytuł: [„Lia”, „Asif”],
_ID: ObjectID („63BD33E401632FD3C02AB8E2”), Tytuł: [„Joly”, „Wae”],
_ID: ObjectID („63BD33E401632FD3C02AB8E3”), tytuł: [„Eden”, „szat”],
_id: ObjectID („63BD33E401632FD3C02AB8E4”), Tytuł: [„William”, „Robert”, „Patinson”],
_ID: ObjectID („63BD33E401632FD3C02AB8E5”), Tytuł: [„Justin”, „P”, „Trudo”]]

Wniosek

Ten przewodnik MongoDB omawia użycie podziału operatora w MongoDB, jednocześnie porównując z koncepcją podzbiorów w matematyce. Aby poprzeć nasze wyjaśnienie, omówiliśmy 2-3 ilustracje MongoDB w formie fragmentów kodowych. Te przykłady kodu ilustrują, w jaki sposób operator podzielony można wykorzystać do podziału wartości określonego pola na podjawy w czasie wykonywania i do stałej zmiany w zbiorze bazy danych.