Indeksy są bardzo ważne w każdej bazie danych, a w przypadku MongoDB nie jest inaczej. Dzięki użyciu indeksów wykonywanie zapytań w MongoDB staje się bardziej wydajne.
Jeśli miałbyś kolekcję z tysiącami dokumentów bez indeksów, a następnie zapytałbyś, aby znaleźć określone dokumenty, to w takim przypadku MongoDB musiałby przeskanować całą kolekcję, aby znaleźć te dokumenty. Ale jeśli miałbyś indeksy, MongoDB użyłby tych indeksów, aby ograniczyć liczbę dokumentów, które musiałyby zostać przeszukane w kolekcji.
Indeksy są specjalnymi zbiorami danych, które przechowują częściową część danych kolekcji. Ponieważ dane są częściowe, ich odczytanie staje się łatwiejsze. Ten częściowy zbiór przechowuje wartość określonego pola lub zestaw pól uporządkowanych według wartości pola.
W tym poradniku dowiesz się –
- Zrozumienie wpływu indeksów
- Jak utworzyć indeksy: createIndex()
- Jak znaleźć indeksy: getindexes()
- Jak usunąć indeksy: dropindex()
Zrozumienie wpływu indeksów
Teraz mimo, że ze wstępu widzieliśmy, że indeksy są dobre dla zapytań, ale posiadanie zbyt wielu indeksów może spowolnić inne operacje, takie jak operacja Insert, Delete i Update.
Jeśli są częste operacje wstawiania, usuwania i aktualizacji wykonywane na dokumentach, wtedy indeksy musiałyby się często zmieniać, co byłoby tylko narzutem dla kolekcji.
Poniższy przykład pokazuje przykład tego, jakie wartości pól mogą stanowić indeks w kolekcji. Indeks może być albo oparty tylko na jednym polu w kolekcji, albo może być oparty na wielu polach w kolekcji.
W poniższym przykładzie, Employeeid „1” i EmployeeCode „AA” są używane do indeksowania dokumentów w kolekcji. Tak więc podczas wyszukiwania zapytania te indeksy zostaną użyte do szybkiego i skutecznego znalezienia wymaganych dokumentów w kolekcji.
Więc nawet jeśli zapytanie wyszukiwania jest oparte na Kodzie Pracownika „AA”, ten dokument zostanie zwrócony.
Jak tworzyć indeksy: createIndex()
Tworzenie indeksu w MongoDB odbywa się za pomocą metody „createIndex”.
Następujący przykład pokazuje jak dodać indeks do kolekcji. Załóżmy, że mamy naszą kolekcję Employee, która posiada pola o nazwach „Employeeid” i „EmployeeName”.
db.Employee.createIndex({Employeeid:1})
Code Explanation:
- Metoda createIndex służy do utworzenia indeksu na podstawie wartości pola „Employeeid” dokumentu.
- Parametr '1′ wskazuje, że po utworzeniu indeksu z wartościami pola „Employeeid” powinny być one posortowane w kolejności rosnącej. Zwróć uwagę, że różni się to od pola _id (pole id jest używane do unikalnej identyfikacji każdego dokumentu w kolekcji), które jest tworzone automatycznie w kolekcji przez MongoDB. Dokumenty zostaną teraz posortowane według pola Employeeid, a nie pola _id.
Jeśli polecenie zostanie wykonane pomyślnie, wyświetlone zostanie następujące wyjście:
Output:
- Opcja numIndexesBefore: 1 wskazuje liczbę wartości Field (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ść Field do indeksu. Ponieważ pole indeksu _id jest częścią kolekcji, gdy jest ona początkowo tworzona, wartość numIndexesBefore wynosi 1.
- NumerIndexesAfter: 2 wskazuje liczbę wartości Field, które znajdowały się tam w indeksach po uruchomieniu polecenia.
- Wyjście „ok: 1” wyjście określa, że operacja zakończyła się powodzeniem, a nowy indeks został dodany do kolekcji.
Powyższy kod pokazuje, jak utworzyć indeks na podstawie jednej wartości pola, ale można również utworzyć indeks na podstawie wielu wartości pola.
Następujący przykład pokazuje, jak można to zrobić;
db.Employee.createIndex({Employeeid:1, EmployeeName:1])
Code Explanation:
- Metoda createIndex uwzględnia teraz wartości wielu pól, co spowoduje, że indeks będzie teraz tworzony na podstawie „Employeeid” i „EmployeeName”. Employeeid:1 i EmployeeName:1 wskazują, że indeks powinien być utworzony na tych 2 wartościach pola z :1 wskazującym, że powinien być w porządku rosnącym.
Jak znaleźć indeksy: getindexes()
Znalezienie indeksu w MongoDB odbywa się za pomocą metody „getIndexes”.
Następujący przykład pokazuje, jak można to zrobić;
db.Employee.getIndexes()
Wyjaśnienie kodu:
- Metoda getIndexes jest używana do znalezienia wszystkich indeksów w kolekcji.
Jeśli polecenie zostanie wykonane pomyślnie, zostanie wyświetlone następujące Wyjście:
Output:
- Wyjście zwraca dokument, który pokazuje jedynie, że w kolekcji znajdują się 2 indeksy, z których jeden to pole _id, a drugi to pole id pracownika. Wartość :1 wskazuje, że wartości pól w indeksie są tworzone w porządku rosnącym.
Jak usunąć indeksy: dropindex()
Usuwanie indeksu w MongoDB odbywa się za pomocą metody dropIndex.
Następujący przykład pokazuje, jak można to zrobić;
db.Employee.dropIndex(Employeeid:1)
Wyjaśnienie kodu:
- Metoda dropIndex pobiera wymagane wartości Pola, które należy usunąć z Indeksu.
Jeżeli polecenie zostanie wykonane pomyślnie, zostanie wyświetlone następujące wyjście:
Output:
- Wartość nIndexesWas: 3 oznacza liczbę wartości Pola, które znajdowały się w indeksach przed wykonaniem polecenia. Pamiętaj, że każda kolekcja posiada pole _id, które również liczy się jako wartość Field do indeksu.
- Wyjście ok: 1 wyjście określa, że operacja się powiodła, a pole „Employeeid” zostało usunięte z indeksu.
Aby usunąć wszystkie indeksy naraz w kolekcji, można użyć polecenia dropIndexes.
Następujący przykład pokazuje, jak można to zrobić.
db.Employee.dropIndex()
Code Explanation:
- Metoda dropIndexes spowoduje usunięcie wszystkich indeksów z wyjątkiem indeksu _id.
Jeśli polecenie zostanie wykonane pomyślnie, zostanie wyświetlone następujące wyjście:
Output:
- Wartość nIndexesWas: 2 oznacza liczbę wartości Pola, które znajdowały się w indeksach przed wykonaniem polecenia.
- Pamiętaj ponownie, że każda kolekcja ma pole _id, które również liczy się jako wartość Field do indeksu, a to nie zostanie usunięte przez MongoDB i to właśnie wskazuje ten komunikat.
- Wyjście ok: 1 wyjście określa, że operacja zakończyła się powodzeniem.
Podsumowanie
- Definiowanie indeksów jest ważne dla szybszego i efektywnego wyszukiwania dokumentów w kolekcji.
- Indeksy można tworzyć za pomocą metody createIndex. Indeksy mogą być tworzone dla jednego pola lub wielu pól.
- Indeksy mogą być znalezione przy użyciu metody getIndexes.
- Indeksy mogą być usunięte przy użyciu metody dropIndex dla pojedynczych indeksów lub dropIndexes dla usunięcia wszystkich indeksów.
.