Operator map MongoDB $

Operator map MongoDB $
MongoDB to popularna baza danych zorientowana na dokumenty NoSQL, która jest używana do przechowywania i zapytania o duże ilości danych. Jedną z potężnych cech MongoDB jest możliwość użycia operatora $ map w rurociągach agregacyjnych do przekształcenia dokumentów w kolekcji. Operator $ mapy pozwala programistom zastosować określoną funkcję do każdego elementu tablicy i zwraca transformowane wartości jako nową tablicę. Operator $ mapa jest używany na etapie $ Project rurociągu i przyjmuje dwa argumenty: wyrażenie wejściowe i wyrażenie „as”. Wyrażenie wejściowe to tablica, którą chcesz przekształcić, a wyrażenie „AS” jest funkcją, którą chcesz zastosować do każdego elementu tablicy. Operator $ mapa zwraca nową tablicę z transformowanymi wartościami. Zaczynamy od wyświetlania dostępnych baz danych w MongoDB.
Test> Pokaż DBS
admin 40.00 kib
Config 112.00 kib
Lokalny 72.00 kib

Użyj bazy danych „Test”, aby rozpocząć dodawanie danych do bazy danych MongoDB, i.mi. „Użyj testu”.

Test> Użyj testu
już w teście DB

Przykład 1:

Oto przykład użycia operatora $ map do wyrównywania każdego elementu tablicy w kolekcji. Generujemy nową kolekcję o nazwie „Informacje” w bazie danych „Test” MongoDB, odrzucając funkcję CreateCollection MongoDB. Metoda CreateCollection () zwraca obiekt z właściwością „OK” i wartością 1, która wskazuje, że kolekcja jest pomyślnie utworzona.

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

Po wygenerowaniu kolekcji wstawiamy niektóre rekordy typu tablicy. Dlatego funkcja InsertMany jest tutaj odrzucana, aby dodać trzy rekordy, z których każda zawiera pole „ARR” typu tablicy z pewnymi wartościami numerycznymi.

Test> db.Informacje.insertMany ([id: 1, arr: [2, 4, 6], id: 2, arr: [3, 5, 7], id: 3, arr: []])
potwierdzony: prawda,
InsertedIds:
„0”: ObjectID (”63C4D968AC8011ECC27D7A35”),
„1”: ObjectID (”63C4D968AC8011ECC27D7A36”),
„2”: ObjectID (”63C4D968AC8011ECC27D7A37”)

Po udanym wstawieniu rekordów do kolekcji „Info” możesz rzucić okiem na funkcję „Znajdź”, jak używaliśmy w następującym zapytaniu:

Test> db.Informacje.znajdować()
[[[
_ID: ObjectID („63C4D968AC8011ECC27D7A35”), ID: 1, ARR: [2, 4, 6],
_ID: ObjectID („63C4D968AC8011ECC27D7A36”), ID: 2, ARR: [3, 5, 7],
_ID: ObjectID („63C4D968AC8011ECC27D7A37”), ID: 3, ARR: []
]

W tym przykładzie operator map służy do dodania każdego elementu w tablicy „ARR” dla dokumentu dla wszystkich trzech rekordów. Wejście dla operatora mapy jest ustawione na „$ ARR”, który odwołuje się do tablicy „ARR” w dokumentach kolekcji „Info”. Parametr „AS” jest ustawiony na „N”, który jest używany jako symbol zastępczy dla każdego elementu w tablicy w funkcji. Parametr „w” zawiera funkcję, która w tym przypadku jest operatorem $ Add, który aktualizuje każdy element tablicy „ARR”, dodając 1. Wyjście tej operacji jest nową tablicą z zaktualizowaną liczbą elementów, ale każdy element jest sumą oryginalnego elementu i „1”, jak wyświetlono przy następnym wyjściu:

Test> db.Informacje.agregate ([$ projekt: a: $ map: input: "$ arr", as: "n", w: $ add: ["$$ n", 1]])
[[[
_ID: ObjectId („63C4D968AC8011ECC27D7A35”), A: [3, 5, 7],
_ID: ObjectID („63C4D968AC8011ECC27D7A36”), A: [4, 6, 8],
_ID: ObjectID („63C4D968AC8011ECC27D7A37”), A: []
]

Przykład 2:

Miejmy kolejny przykład wykorzystania operatora „mapy” MongoDB. Począwszy od tej ilustracji, powinieneś utworzyć nową kolekcję o nazwie „informacje” w swojej testowej bazie danych. Metoda CreateCollection () służy do utworzenia nowej kolekcji w bieżącej bazie danych, która jest „testem”. Ponieważ już go stworzyliśmy metodą „CreateCollection” bazy danych, pomijamy ten krok tutaj.

Poniższe zapytanie używa interfejsu wiersza poleceń MongoDB (CLI) do wstawienia wielu dokumentów do kolekcji o nazwie „Dane”. Każdy dokument reprezentuje miasto i jego odległość w milach do innych lokalizacji. Polecenie używa metody insertMany () do wstawienia trzech dokumentów jednocześnie. Każdy dokument ma pole „City” o wartości ciągu i polu „odległości” z szeregiem liczb. Metoda insertMany () zwraca obiekt z właściwościami „potwierdzonymi” i „wstawionymi”, które potwierdzają, że operacja się powiodła i zapewnia unikalne obiekty, które są przypisane do każdego włożonego dokumentu.

Test> db.Dane.INSERTMANY ([„City”: „Newyork”, „odległość”: [22.56, 66.7, 88.1],
… „City”: „Londyn”, „odległość”: [77.76, 14.72, 11.56],
… „City”: „Texas”, „odległość”: [44.70, 64.99, 94.6]])

Uznany: prawda,
InsertedIds:
„0”: ObjectID (”63C4E24CAC8011ECC27D7A38”),
„1”: ObjectID (”63C4E24CAC8011ecc27d7a39”),
„2”: ObjectID (”63C4E24CAC8011ecc27d7a3a”)

To zapytanie służy do pobierania wszystkich dokumentów z kolekcji o nazwie „Dane”. Metoda Find () jest używana z pustym zapytaniem , co oznacza, że ​​zwraca wszystkie dokumenty w kolekcji. Dane wyjściowe jest szeregiem dokumentów, które pasują do zapytania, w którym każdy dokument ma pole „_id”, które jest przypisanym unikalnym obiektem, pole „City” o wartości ciągu i polu „odległość” z szeregiem liczb. To zapytanie pokazuje wszystkie włożone dokumenty.

Test> db.Dane.znajdować()
[[[
_id: ObjectID („63C4E24CAC8011ECC27D7A38”), miasto: „Newyork”, odległość: [22.56, 66.7, 88.1],
_id: ObjectID („63C4E24CAC8011ECC27D7A39”), miasto: „Londyn”, odległość: [77.76, 14.72, 11.56],
_id: ObjectID („63C4E24CAC8011ECC27D7A3A”), City: „Texas”, odległość: [44.7, 64.99, 94.6]
]

Poniższe zapytanie wykorzystuje bazę danych MongoDB „TEST” do wykonania agregowanej operacji w kolekcji „danych”. Metoda agregate () jest stosowana z tablicą zawierającą pojedynczy etap rurociągu, który jest etapem $. Etap projektu $ służy do przekształcenia dokumentów w zbiorze poprzez określenie nowego zestawu pól. W takim przypadku pole miasta jest przekazywane i dodaje się nowe pole „przym”. Nowe pole „przym” jest tworzone za pomocą operatora $ map, który stosuje określone wyrażenie do każdego elementu tablicy wejściowej i zwraca tablicę wyjściową z tą samą liczbą elementów.

Operator $ mapy przyjmuje trzy argumenty: tablica wejściowa, która jest „$ odległość”, nazwa zmiennej dla bieżącego elementu w tablicy wejściowej, która jest „DC”, oraz wyrażenie stosowane do każdego elementu tablicy wejściowej. W takim przypadku wyrażeniem jest obcięcie wartości dziesiętnej odległości za pomocą operatora $ trunc. Rezultatem jest szereg dokumentów o tej samej strukturze co oryginalne dokumenty, ale z dodatkowym polem „przym”, które zawiera szereg liczb całkowitych, które są obcięte z pola „odległości”.

Test> db.Dane.Aggregate ([$ projekt: miasto: „$ miasto”, przym:
… $ Map: input: „$ dystans”, as: „dc”, w: $ trunc: "$$ dc"]))))
[[[
_id: ObjectId („63C4E24CAC8011ECC27D7A38”), City: „Newyork”, przym: [22, 66, 88],
_id: ObjectID („63C4E24CAC8011EC27D7A39”), City: „London”, przym: [77, 14, 11],
_id: ObjectID („63C4E24CAC8011ECC27D7A3A”), City: „Texas”, przym: [44, 64, 94]
]

Wniosek

Ten przewodnik opracowuje użycie operatora „mapy” w MongoDB bardzo wyraźnie we wstępie. Aby poprzeć wyjaśnienie, które przedstawiliśmy we wstępie, wyjaśniliśmy dwa powiązane przykłady w tym artykule. Przechodząc przez te przykłady, możesz dodać wartość do elementu tablicy konkretnego dokumentu i możesz obcinać punkty dziesiętne z określonych elementów tablicy. Podsumowując, operator map MongoDB jest potężną funkcją, która pozwala programistom przekształcić tablice dokumentów w kolekcji. Jest łatwy w użyciu i może być używany w połączeniu z innymi operatorami agregacji do wykonywania bardziej złożonych transformacji. Dzięki mapie $ programiści mogą łatwo manipulować danymi i uczynić je bardziej przydatnymi w swoich aplikacjach.