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.










