MongoDB Custom $ funkcja

MongoDB Custom $ funkcja
MongoDB to potężna i elastyczna baza danych zorientowana na dokumenty, która umożliwia programistom przechowywanie i pobieranie danych w formacie podobnym do JSON. Jedną z najpotężniejszych cech MongoDB jest jego zdolność do używania niestandardowych funkcji $ do manipulowania i zapytania danych. Niestandardowe metody JavaScript po stronie serwera, powszechnie określane jako „funkcje przechowywane”, są obsługiwane przez MongoDB i mogą być wykorzystywane w języku zapytań i zagregowanych etapach rurociągów. Funkcje te można określić za pomocą DB.system.Kolekcja JS i mogą być używane w zapytaniach lub w rurociągu agregatem za pomocą operatora funkcji $. W tym artykule przyjrzymy się niektórym przykładom niestandardowych funkcji $ i wynikających z tego wyjścia.

Utwórz kolekcję

Po pierwsze, sprawdzimy kolekcję dostępną w naszej bazie danych. Dlatego powłok. Instrukcja MongoDB „Show Collections” została wykonana w celu wyświetlania wszystkich kolekcji, które mamy. To polecenie nie zwraca niczego na powłoce, ponieważ w naszej bazie danych „testowych” nie ma kolekcji. Dlatego musimy najpierw utworzyć nową kolekcję, a następnie rozpocząć nad nią pracować.

Test> Pokaż kolekcje

Aby dodać lub utworzyć nowy gromadzenie danych w bazie danych MongoDB, musimy użyć instrukcji „DB”, a następnie metody CreateCollection. Metoda CreateCollection została specjalnie zaprojektowana do tworzenia nowych kolekcji przyjmujących nazwę kolekcji, która ma zostać utworzona w jego argumencie. W poniższej instrukcji nazwaliśmy kolekcję „testem”. Dane wyjściowe polecenia zwraca status sukcesu: 0 dla awarii i 1 dla sukcesu. Poniższe polecenie zwraca 1, co oznacza, że ​​polecenie zakończyło się powodzeniem, a kolekcja została utworzona.

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

Wstaw rekordy

Po dodaniu nowej kolekcji do bazy danych konieczne jest dodanie do niej rekordów, ponieważ kolekcja może być pusta w momencie tworzenia. Dlatego po użyciu funkcji InsertMany MongoDB w instrukcji „DB” dodaliśmy 5 dokumentów do kolekcji „testowej” jednocześnie. Funkcja InsertMany () jest specyficzna dla wstawienia wielu rekordów jednocześnie. Wszystkie 5 rekordów zawierają w sumie 3 pól: tytuł, miasto i obszar. Pole „Tytuł” ​​jest typu „String”, pole obszarowe jest typu liczb całkowitych, a pole miasta znajduje. Wyjście tej instrukcji pokazuje potwierdzenie, pokazując wstawione identyfikatory każdego dokumentu osobno przypisane przez bazę danych MongoDB.

Test> db.Test.INSERTMANY ([tytuł: „USA”, miasto: [„Newyork”, „Chicago”, „Boston”], obszar: 234567,
… Tytuł: „ZEA”, City: [„Dubai”, „Abudhabi”, „Sharjah”], Obszar: 786907,
… Tytuł: „Azja”, City: [„Bangkok”, „Tokyo”, „Beijing”], obszar: 984567,
… Tytuł: „Europa”, miasto: [„Włochy”, „Stambuł”, „Londyn”], obszar: 1475997,
… Tytuł: „Antarkctica”, miasto: [„Villa Las estrellas”, „King Edward Point”, „Grytvkin”], obszar: 2835997]))

Uznany: prawda,
InsertedIds:
„0”: ObjectID (”63cffd7d64f216739d14b251”),
„1”: ObjectID (”63cffd7d64f216739d14b252”),
„2”: ObjectID (”63cffd7d64f216739d14b253”),
„3”: ObjectID (”63cffd7d64f216739d14b254”),
„4”: ObjectID (”63CFFD7D64F216739D14B255”)

Wyświetl rekordy

Po wstawieniu wszystkich rekordów w kolekcji „testowej” bazy danych „testowej” MongoDB, jesteśmy gotowi przyjrzeć się wszystkim jednocześnie, aby zweryfikować wprowadzenie. Zatem funkcja „Znajdź” MongoDB można w tym celu odrzucić w instrukcji „DB”. Użyj nazwy kolekcji między słowem kluczowym „DB” a funkcją Find (). Parametry funkcji „Znajdź” muszą zawierać puste wsporniki kręcone bez określania nazwy pola. Puste wsporniki rozważają pobieranie wszystkich rekordów z kolekcji za pomocą wszystkich pól danych, jednocześnie określając jeden lub więcej pól, które prowadzą do jednego lub tylko określonego wyświetlacza rekordu na powładzie. Dlatego wyjście dla tej instrukcji z pustymi nawiasami kręconymi w funkcji Find () wyświetlono wszystkie 5 rekordów kolekcji „testowej” z wszystkimi 3 pola: tytuł, miasto i obszar. Ponadto każdy rekord można zidentyfikować osobno od innego za pomocą pola „_id” przypisanego przez bazę danych MongoDB.

Test> db.Test.znajdować()
[[[
_id: ObjectID („63cffd7d64f216739d14b251”), tytuł: „USA”, miasto: [„newYYork”, „Chicago”, „Boston”], obszar: 234567,
_id: ObjectID („63cffd7d64f216739d14b252”), tytuł: „ZEA”, City: [„Dubai”, „Abudhabi”, „Sharjah”], Obszar: 786907,
_id: ObjectID („63cffd7d64f216739d14b253”), tytuł: „Asia”, City: [„Bangkok”, „Tokyo”, „Beijing”], obszar: 984567,
_id: ObjectId („63cffd7d64f216739d14b254”), tytuł: „Europa”, miasto: [„Włochy”, „Istambul”, „Londyn”], obszar: 1475997,
_id: ObjectId („63cffd7d64f216739d14b255”), tytuł: „Antarkctica”, miasto: [„Villa Las estrellas”, „King Edward Point”, „Grytvkin”], obszar: 2835997
]

Przykład nr 01:

Teraz, gdy skończymy z wstawieniem i wyświetlaniem rekordów z kolekcji „Test”, jesteśmy w końcu gotowi zastosować funkcję $ Function, aby wykonywać operacje dostosowywane na polach. Na przykład chcesz utworzyć nowe pole wykonawcze w kolekcji „test”, który będzie zawierał szczegóły dotyczące kraju, jego miast i obszaru, w którym zawiera w jednym zdaniu. W tym celu musimy wykorzystać wszystkie trzy pola kolekcji „testowej” w ramach niestandardowego operatora funkcji $ użytych w zapytaniu funkcji „agregat” pokazanych poniżej. Funkcja niestandardowa przyjmuje wszystkie trzy pola kolekcji „testu” w parametrach, aby utworzyć nowe „szczegóły” pola. Instrukcja powrotu wykorzystuje te trzy pola do wykonania zdania i wyświetlania go na skorupce. Konieczne jest określenie pola kolekcji jako „arg” i języka ustawionego na „JS”. Wyjście pokazuje nowe „szczegóły” pola wykonawczego, dostarczające dokładnych informacji w zdaniu.

Test> db.Test.agregate ([$ addfields: detail: $ funkcja: body: funkcja (tytuł, miasto, obszar) return '$ tytuł ma $ miasto z $ obszar obszar…', args: [„$ tytuł”, „$ miasto”, „$ area”], lang: „js”]))
[[[
_ID: ObjectID („63cffd7d64f216739d14b251”), tytuł: „USA”, miasto: [„Newyork”, „Chicago”, „Boston”], obszar: 234567, detal: „USA HAS NEWYork, Chicago, Boston Cities with 234567 Area” … ',
_ID: ObjectID („63cffd7d64f216739d14b252”), tytuł: „ZEA”, miasto: [„Dubai”, „Abudhabi”, „Sharjah”], obszar: 786907, szczegóły: „Uae ma Dubai, Abudhabi, Sharjah z 786907 area” … ',
_ID: ObjectID („63cffd7d64f216739d14b253”), tytuł: „Asia”, miasto: [„Bangkok”, „Tokyo”, „Pekin”], obszar: 984567, szczegółowe: „Asia ma Bangkok, Tokyo, beijing miast z 984567 … ',
_ID: ObjectID („63cffd7d64f216739d14b254”), tytuł: „Europa”, miasto: [„Włochy”, „Stambuł”, „Londyn”], obszar: 1475997, detale: „Europa ma Włochy, Istanbul, Londyn Cities z 1475997 obszarami obszaru 1475997 … ',
_ID: ObjectID („63cffd7d64f216739d14b255”), tytuł: „Antarkctica”, miasto: [„Villa las estrellas”, „King Edward Point”, „Grytvkin”], obszar: 2835997, Szczegóły: „Antarktyca ma villa las estrellas, król king las estrelas, król Edward Point, Grytvkin Cities z obszarem 2835997… '
]

Przykład nr 02:

Spójrzmy na inną ilustrację, aby użyć funkcji niestandardowej $ w MongoDB. Tutaj używamy operatora $ addfields, a następnie nazwy pola „AreaTripled”, które chcemy utworzyć za pomocą operatora $ Function. Funkcja niestandardowa przyjmuje 1 pole „obszar” jako jego argument, a słowo kluczowe „let” pozwala nam zadeklarować zmienną „potrójną”, biorąc wartość jako wartość pola „obszaru” pomnożona przez 3. Instrukcja powrotu zwróci i wyświetli wynik obliczony w zmiennej potrójnej. Dlatego wyjście podłączonej poniżej instrukcji wyświetla łącznie 5 pól dla każdego dokumentu pola testowego. Pole „AreaTripled” zostało wygenerowane przez użycie niestandardowej funkcji pokazującej obszar dla wszystkich trzech miast wymienionych w polu „City” każdego dokumentu poprzez pomnożenie wartości pola obszaru przez 3.

Test> db.Test.agregate ([$ addfields: areaTripled: $ funkcja: body: funkcja (obszar) let triple = obszar*3; return '$ potrójne', args: [„ól obszar”], lang: " js "])
[[[
_id: ObjectID („63cffd7d64f216739d14b251”), tytuł: „USA”, miasto: [„Newyork”, „Chicago”, „Boston”], obszar: 234567, AreaTripled: „703701”,
_id: ObjectId („63cffd7d64f216739d14b252”), tytuł: „ZEA”, miasto: [„Dubai”, „Abudhabi”, „Sharjah”], Obszar: 786907, AreaTripled: „2360721”,
_ID: ObjectId („63cffd7d64f216739d14b253”), tytuł: „Asia”, miasto: [„Bangkok”, „Tokyo”, „Beijing”], obszar: 984567, AreaTripled: „2953701”,
_ID: ObjectId („63cffd7d64f216739d14b254”), tytuł: „Europa”, miasto: [„Włochy”, „Istambuł”, „Londyn”], obszar: 1475997, AreaTripled: „44279991 ',
_ID: ObjectID („63cffd7d64f216739d14b255”), tytuł: „Antarkctica”, miasto: [„Villa las estrellas”, „King Edward Point”, „Grytvkin”], obszar: 2835997, AreaTripled: „850791”]

Wniosek

Artykuł dotyczy niestandardowych funkcji w MongoDB i pokazuje, w jaki sposób środowisko MongoDB jest tak potężne przy użyciu takich funkcji: ponieważ funkcje te umożliwiają wprowadzenie danych podobnych do JSON i ich pobieranie. Następnie utworzyliśmy kolekcję i wstawiliśmy do niej rekordy przed użyciem niestandardowego operatora funkcji $. Po ustawieniu środowiska użyliśmy dwóch przykładów, aby zilustrować użycie funkcji niestandardowej $. Przykłady obejmowały użycie niestandardowego operatora funkcji $ do utworzenia nowego pola danych za pomocą już wstawionych pola kolekcji, a także wykonują obliczenia w miarę możliwości za pomocą deklaracji zmiennej za pomocą słowa kluczowego „Let”.