MongoDB Indeksowanie: createIndex() i dropIndex()
⚡ Inteligentne podsumowanie
MongoDB Indeksy przechowują uporządkowany podzbiór pól kolekcji, dzięki czemu zapytania mogą lokalizować dokumenty bez konieczności skanowania każdego rekordu. Metody createIndex, getIndexes i dropIndex budują, wyświetlają i usuwają te krytyczne dla wydajności struktury.

Jakie są MongoDB Indeksy?
Indeksy są bardzo ważne w każdej bazie danych MongoDB nie jest inaczej. Korzystając z indeksów, wykonując zapytania w MongoDB staje się bardziej wydajny.
Jeśli posiadasz kolekcję składającą się z tysięcy dokumentów bez indeksów i następnie wykonujesz zapytanie w celu znalezienia 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 zestawy danych, które przechowują częściową część danych kolekcji. Ponieważ dane są częściowe, ich odczyt staje się łatwiejszy. Ten częściowy zestaw przechowuje wartość określonego pola lub zestawu pól, uporządkowanych według wartości pola.
Zrozumienie wpływu indeksów
Mimo że we wstępie pokazano, że indeksy są przydatne w przypadku zapytań, zbyt duża liczba indeksów może spowalniać inne operacje, takie jak wstawianie, usuwanie i aktualizowanie.
Jeśli operacje wstawiania, usuwania i aktualizowania dokumentów są wykonywane często, indeksy muszą być często zmieniane, co jest jedynie obciążeniem dla kolekcji.
Poniższy przykład pokazuje, jakie wartości pól mogą stanowić indeks w kolekcji. Indeks może opierać się na jednym polu w kolekcji lub na wielu polach w kolekcji.
W poniższym przykładzie Employeeid „1” i EmployeeCode Indeksy „AA” służą do indeksowania dokumentów w kolekcji. Dzięki temu, po przeprowadzeniu wyszukiwania, indeksy te pozwolą na szybkie i efektywne znalezienie potrzebnych dokumentów w kolekcji.
Tak więc nawet jeśli zapytanie wyszukiwania opiera się na pracownikuCode „AA” – ten dokument zostanie zwrócony.
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ę „Pracownicy”, której pola mają nazwy „Employeeid” i „EmployeeName”.
db.Employee.createIndex({Employeeid:1})
Code Wyjaśnienie:
- utwórzIndeks metoda służy do tworzenia indeksu na podstawie „Employeeid” dokumentu.
- Parametr „1” oznacza, że po utworzeniu indeksu z wartościami pola „Employeeid” należy je posortować rosnąco. Należy pamiętać, że różni się to od pola _id (które jednoznacznie identyfikuje każdy dokument), które MongoDB Tworzy się automatycznie. Dokumenty będą teraz sortowane według pola Employeeid, a nie _id.
Jeśli polecenie zostanie wykonane pomyślnie, wyświetlony zostanie następujący komunikat:
Wyjście:
- Wartość numIndexesBefore: 1 wskazuje liczbę wartości pól w indeksach przed uruchomieniem polecenia. Każda kolekcja ma pole _id, które również jest traktowane jako wartość pola, więc numIndexesBefore wynosi 1.
- numIndexesAfter: 2 wskazuje liczbę wartości pól w indeksach po uruchomieniu polecenia.
- 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ć:
db.Employee.createIndex({Employeeid:1, EmployeeName:1})
Metoda createIndex uwzględnia teraz wiele wartości pól, co spowoduje utworzenie indeksu na podstawie wartości „Employeeid” i „EmployeeName”. Wartości Employeeid:1 i EmployeeName:1 wskazują, że indeks powinien zostać utworzony na podstawie tych dwóch wartości pól, a :1 oznacza kolejność rosnącą. Jest to tzw. indeks złożony.
Jak znaleźć indeksy: getIndexes()
Znalezienie indeksu w MongoDB odbywa się za pomocą pobierzIndeksy metoda. Poniższy przykład pokazuje, jak to zrobić:
db.Employee.getIndexes()
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:
Wynik zwraca dokument, który pokazuje, że w kolekcji znajdują się dwa indeksy: pole _id i pole Employeeid. Wartość :1 oznacza, że wartości pól w indeksie są tworzone w kolejności rosnącej.
Jak usuwać indeksy: dropIndex()
Usuwanie indeksu w MongoDB odbywa się za pomocą dropIndex metoda. Poniższy przykład pokazuje, jak to zrobić:
db.Employee.dropIndex({Employeeid:1})
Metoda dropIndex przyjmuje wymagane wartości pól, które należy usunąć z indeksu.
Jeśli polecenie zostanie wykonane pomyślnie, wyświetlony zostanie następujący komunikat:
Wyjście:
- Wartość nIndexesWas: 3 wskazuje liczbę wartości pól w indeksach przed uruchomieniem polecenia. Każda kolekcja ma pole _id, które również jest traktowane jako wartość pola.
- Wynik ok: 1 oznacza, że operacja zakończyła się powodzeniem, a pole „Employeeid” zostaje usunięte z indeksu.
Aby usunąć wszystkie indeksy z kolekcji naraz, można użyć polecenia dropIndexes. Poniższy przykład pokazuje, jak to zrobić:
db.Employee.dropIndexes()
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:
- nIndexesWas: 2 wskazuje liczbę wartości pól w indeksach przed uruchomieniem polecenia.
- Każda kolekcja ma pole _id, które również jest traktowane jako wartość pola i nie zostanie usunięte przez MongoDB; to właśnie wskazuje ta wiadomość.
- Wyjście ok: 1 oznacza, że operacja zakończyła się powodzeniem.










