MongoDB Samouczek indeksowania – przykład createIndex(), dropindex().

Indeksy są bardzo ważne w każdej bazie danych MongoDB nie jest inaczej. Za pomocą Indeksów wykonywanie zapytań w MongoDB staje się bardziej wydajny.

Jeśli masz kolekcję zawierającą tysiące dokumentów bez indeksów, a następnie szukasz określonych dokumentów, to w takim przypadku MongoDB musiałby przeskanować całą kolekcję, aby znaleźć dokumenty. Ale gdybyś miał indeksy, MongoDB korzystałby z tych indeksów, aby ograniczyć liczbę dokumentów, które należało przeszukać w zbiorze.

Indeksy to specjalne zbiory danych, w których przechowywana jest część danych kolekcji. Ponieważ dane są częściowe, łatwiej jest je odczytać. Ten częściowy zestaw przechowuje wartość określonego pola lub zestaw pól uporządkowanych według wartości pola.

Zrozumienie wpływu indeksów

Chociaż we wstępie widzieliśmy, że indeksy są przydatne w przypadku zapytań, to jednak zbyt duża liczba indeksów może spowolnić inne operacje, takie jak wstawianie, usuwanie i aktualizowanie.

Jeżeli operacje wstawiania, usuwania i aktualizowania dokumentów są wykonywane często, indeksy muszą być często zmieniane, co jedynie zwiększałoby obciążenie kolekcji.

Poniższy przykład pokazuje, jakie wartości pól mogą stanowić indeks w kolekcji. Indeks może opierać się tylko na jednym polu w kolekcji lub na wielu polach w kolekcji.

W poniższym przykładzie identyfikator pracownika „1” i kod pracownika „AA” służą do indeksowania dokumentów w kolekcji. Zatem w przypadku wyszukiwania kwerendowego indeksy te posłużą do szybkiego i sprawnego odnalezienia wymaganych dokumentów w zbiorze.

Zatem nawet jeśli zapytanie opiera się na kodzie pracownika „AA”, dokument ten zostanie zwrócony.

Zrozumienie wpływu indeksów

Jak tworzyć indeksy: createIndex()

Tworzenie indeksu w MongoDB odbywa się za pomocą „utwórzIndeks" metoda.

Poniższy przykład pokazuje, jak dodać indeks do kolekcji. Załóżmy, że mamy tę samą kolekcję Employee, która ma nazwy pól „Employeeid” i „EmployeeName”.

Utwórz indeksy: createIndex()

db.Employee.createIndex({Employeeid:1})

Wyjaśnienie kodu:

  1. Kolekcja utwórzIndeks metoda służy do tworzenia indeksu na podstawie „Employeeid” dokumentu.
  2. Parametr „1” wskazuje, że w przypadku tworzenia indeksu z wartościami pola „Employeeid” należy je posortować rosnąco. Należy pamiętać, że różni się to od pola _id (pole id służy do jednoznacznej identyfikacji każdego dokumentu w kolekcji), które jest tworzone automatycznie w kolekcji przez MongoDB. Dokumenty zostaną teraz posortowane według pola Identyfikator pracownika, a nie pola _id.

Jeśli polecenie zostanie wykonane pomyślnie, wyświetlony zostanie następujący komunikat:

Wyjście:

Utwórz indeksy: createIndex()

  1. Wartość numIndexesBefore: 1 wskazuje liczbę wartości pól (rzeczywistych pól w kolekcji), które znajdowały się w indeksach przed wykonaniem polecenia. Pamiętaj, że każda kolekcja ma pole _id, które również liczy się jako wartość pola w indeksie. Ponieważ pole indeksu _id jest częścią kolekcji w momencie jej początkowego utworzenia, wartość numIndexesBefore wynosi 1.
  2. Wartość numIndexesAfter: 2 wskazuje liczbę wartości pól, które znajdowały się w indeksach po uruchomieniu komendy.
  3. W tym przypadku wynik „ok: 1” oznacza, że ​​operacja zakończyła się powodzeniem i nowy indeks został dodany do kolekcji.

Powyższy kod pokazuje, jak utworzyć indeks na podstawie wartości jednego pola, ale można również utworzyć indeks na podstawie wielu wartości pól.

Poniższy przykład pokazuje, jak to zrobić:

Utwórz indeksy: createIndex()

db.Employee.createIndex({Employeeid:1, EmployeeName:1])

Wyjaśnienie kodu:

  • Metoda createIndex uwzględnia teraz wiele wartości Field, co spowoduje teraz utworzenie indeksu na podstawie „Employeeid” i „EmployeeName”. Identyfikator pracownika:1 i Nazwapracownika:1 wskazują, że indeks powinien zostać utworzony na podstawie tych 2 wartości pól, przy czym :1 oznacza, że ​​powinien być on uporządkowany rosnąco.

Jak znaleźć indeksy: getindexes()

Znalezienie indeksu w MongoDB odbywa się za pomocą „pobierz indeksy” Metoda.

Poniższy przykład pokazuje, jak to zrobić:

Znajdź indeksy: getindexes()

db.Employee.getIndexes()

Wyjaśnienie kodu:

  • Metoda getIndexes służy do wyszukiwania wszystkich indeksów w kolekcji.

Jeśli polecenie zostanie wykonane pomyślnie, wyświetlony zostanie następujący komunikat:

Wyjście:

Znajdź indeksy: getindexes()

  • Dane wyjściowe zwracają dokument, który pokazuje, że w kolekcji znajdują się 2 indeksy, czyli pole _id, a drugi to pole identyfikatora pracownika. Wartość :1 wskazuje, że wartości pól w indeksie są tworzone w kolejności rosnącej.

Jak usunąć indeksy: dropindex()

Usuwanie indeksu w MongoDB odbywa się za pomocą metody dropIndex.

Poniższy przykład pokazuje, jak to zrobić:

Upuść indeksy: dropindex()

db.Employee.dropIndex(Employeeid:1)

Wyjaśnienie kodu:

  • Metoda dropIndex pobiera wymagane wartości pola, które należy usunąć z indeksu.

Jeśli polecenie zostanie wykonane pomyślnie, wyświetlony zostanie następujący komunikat:

Wyjście:

Upuść indeksy: dropindex()

  1. Wartość nIndexesWas: 3 wskazuje liczbę wartości pól, które znajdowały się w indeksach przed wykonaniem polecenia. Pamiętaj, że każda kolekcja ma pole _id, które również liczy się jako wartość pola w indeksie.
  2. Wynik ok: 1 oznacza, że ​​operacja zakończyła się powodzeniem, a pole „Employeeid” zostaje usunięte z indeksu.

Aby usunąć jednocześnie wszystkie indeksy z kolekcji, można użyć polecenia dropIndexes.

Poniższy przykład pokazuje, jak to zrobić.

Upuść indeksy: dropindex()

db.Employee.dropIndex()

Wyjaśnienie kodu:

  • Metoda dropIndexes usunie wszystkie indeksy z wyjątkiem indeksu _id.

Jeśli polecenie zostanie wykonane pomyślnie, wyświetlony zostanie następujący komunikat:

Wyjście:

Upuść indeksy: dropindex()

  1. Wartość nIndexesWas: 2 wskazuje liczbę wartości pól, które znajdowały się w indeksach przed wykonaniem polecenia.
  2. Pamiętaj jeszcze raz, że każda kolekcja ma pole _id, które również liczy się jako wartość pola w indeksie i nie zostanie usunięte przez MongoDB i na to wskazuje ten komunikat.
  3. Wyjście ok: 1 oznacza, że ​​operacja zakończyła się powodzeniem.

Podsumowanie

  • Definiowanie indeksów jest istotne dla szybszego i skuteczniejszego przeszukiwania dokumentów w zbiorze.
  • Indeksy można tworzyć za pomocą metody createIndex. Indeksy można tworzyć tylko dla jednego pola lub dla wielu wartości pól.
  • Indeksy można znaleźć za pomocą metody getIndexes.
  • Indeksy można usunąć, używając metody dropIndex w przypadku pojedynczych indeksów lub dropIndexes w celu usunięcia wszystkich indeksów.