indeks w MongoDB jest specjalną strukturą danych, która przechowuje dane kilku pól dokumentów, na których indeks jest tworzony . Indeksy zwiększają szybkość operacji wyszukiwania w bazie danych, ponieważ zamiast przeszukiwać cały dokument, wyszukiwanie jest wykonywane na indeksach, które zawierają tylko kilka pól. Z drugiej strony, posiadanie zbyt wielu indeksów może utrudniać wykonywanie operacji insert, update I delete z powodu dodatkowego zapisu i dodatkowej przestrzeni danych używanej przez indeksy.
jak utworzyć indeks w składni MongoDB
:
db.collection_name.createIndex({field_name: 1 or -1})
wartość 1 jest dla porządku rosnącego i -1 jest dla porządku malejącego.
na przykład mam kolekcję studentdata
. Dokumenty wewnątrz tej kolekcji mają następujące pola:
student_name, student_id i student_age
powiedzmy, że chcę utworzyć indeks w polu student_name w kolejności rosnącej:
db.studentdata.createIndex({student_name: 1})
Wyjście:
{ "createdCollectionAutomatically" : false, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1}
stworzyliśmy indeks na nazwie student_name, co oznacza, że gdy ktoś przeszukuje dokument na podstawie nazwy student_name, wyszukiwanie będzie szybsze, ponieważ indeks będzie używany do tego wyszukiwania. Dlatego ważne jest, aby utworzyć indeks w polu, które będzie często wyszukiwane w kolekcji.
MongoDB – znajdowanie indeksów w kolekcji
możemy użyć metody getIndexes (), aby znaleźć wszystkie indeksy utworzone w kolekcji. Składnia tej metody jest:
db.collection_name.getIndexes()
aby uzyskać indeksy kolekcjistudentdata
, polecenie będzie następujące:
> db.studentdata.getIndexes()
wyjście pokazuje, że mamy dwa indeksy w tej kolekcji. Domyślny indeks utworzony na _id i indeks, który stworzyliśmy w polu student_name.
MongoDB – upuść indeksy w kolekcji
możesz upuścić określony indeks lub wszystkie indeksy.
upuszczenie określonego indeksu:
w tym celu używana jest metoda dropIndex ().
db.collection_name.dropIndex({index_name: 1})
pozwala upuścić indeks, który stworzyliśmy w polustudent_name
w kolekcjistudentdata
. Polecenie do tego celu:
db.studentdata.dropIndex({student_name: 1})
nIndexesWas: pokazuje, ile indeksów było przed wykonaniem tego polecenia
ok: 1: oznacza to, że polecenie zostało wykonane pomyślnie.
upuszczanie wszystkich indeksów:
aby upuścić wszystkie indeksy kolekcji, używamy metody dropIndexes ().
składnia metody dropIndexs ():
db.collection_name.dropIndexes()
powiedzmy, że chcemy usunąć wszystkie indeksy kolekcjistudentdata
.
db.studentdata.dropIndexes()
komunikat „indeksy inne niż _id upuszczone do kolekcji” wskazuje, że domyślny indeks _id pozostanie i nie może zostać upuszczony. Oznacza to, że używając tej metody możemy upuścić tylko indeksy, które stworzyliśmy, nie możemy upuścić domyślnego indeksu utworzonego w polu _id.