MongoDB - indeksowanie

Indeksy obsługują wydajne rozwiązywanie zapytań. Bez indeksów MongoDB musi skanować każdy dokument w kolekcji, aby wybrać te dokumenty, które pasują do wyrażenia zapytania. To skanowanie jest wysoce nieefektywne i wymaga MongoDB do przetworzenia dużej ilości danych.

Indeksy to specjalne struktury danych, które przechowują niewielką część zestawu danych w łatwej do przejrzenia formie. Indeks przechowuje wartość określonego pola lub zestawu pól uporządkowanych według wartości pola określonej w indeksie.

Metoda createIndex ()

Aby utworzyć indeks, musisz użyć metody createIndex () bazy danych MongoDB.

Składnia

Podstawowa składnia createIndex() metoda jest następująca ().

>db.COLLECTION_NAME.createIndex({KEY:1})

Tutaj klucz jest nazwą pola, dla którego chcesz utworzyć indeks, a 1 oznacza kolejność rosnącą. Aby utworzyć indeks w porządku malejącym, musisz użyć -1.

Przykład

>db.mycol.createIndex({"title":1})
{
	"createdCollectionAutomatically" : false,
	"numIndexesBefore" : 1,
	"numIndexesAfter" : 2,
	"ok" : 1
}
>

W createIndex() metodę można przekazać wiele pól, aby utworzyć indeks na wielu polach.

>db.mycol.createIndex({"title":1,"description":-1})
>

Ta metoda akceptuje również listę opcji (które są opcjonalne). Poniżej znajduje się lista -

Parametr Rodzaj Opis
tło Boolean Tworzy indeks w tle, aby budowanie indeksu nie blokowało innych działań bazy danych. Określ true, aby budować w tle. Wartość domyślna tofalse.
wyjątkowy Boolean Tworzy unikalny indeks, dzięki czemu kolekcja nie będzie akceptować wstawiania dokumentów, w których klucz lub klucze indeksu pasują do istniejącej wartości w indeksie. Określ true, aby utworzyć unikalny indeks. Wartość domyślna tofalse.
Nazwa strunowy Nazwa indeksu. Jeśli nie zostanie określony, MongoDB generuje nazwę indeksu, łącząc nazwy indeksowanych pól i porządek sortowania.
rzadki Boolean Jeśli prawda, indeks odwołuje się tylko do dokumentów z określonym polem. Te indeksy zajmują mniej miejsca, ale zachowują się inaczej w niektórych sytuacjach (szczególnie podczas sortowania). Wartość domyślna tofalse.
expireAfterSeconds liczba całkowita Określa wartość w sekundach jako TTL, aby kontrolować, jak długo MongoDB zachowuje dokumenty w tej kolekcji.
ciężary dokument Waga jest liczbą z zakresu od 1 do 99 999 i określa znaczenie pola w stosunku do innych indeksowanych pól pod względem wyniku.
domyślny język strunowy W przypadku indeksu tekstowego: język, który określa listę słów pomijanych oraz reguły dotyczące stemmera i tokenizera. Wartość domyślna toEnglish.
language_override strunowy W przypadku indeksu tekstowego określ nazwę pola w dokumencie zawierającym język, który ma zastąpić język domyślny. Wartość domyślna to język.

Metoda dropIndex ()

Możesz usunąć określony indeks za pomocą metody dropIndex () bazy danych MongoDB.

Składnia

Podstawowa składnia metody DropIndex () jest następująca ().

>db.COLLECTION_NAME.dropIndex({KEY:1})

Tutaj klucz jest nazwą pliku, dla którego chcesz utworzyć indeks, a 1 oznacza kolejność rosnącą. Aby utworzyć indeks w porządku malejącym, musisz użyć -1.

Przykład

> db.mycol.dropIndex({"title":1})
{
	"ok" : 0,
	"errmsg" : "can't find index with key: { title: 1.0 }",
	"code" : 27,
	"codeName" : "IndexNotFound"
}

Metoda dropIndexes ()

Ta metoda usuwa wiele (określonych) indeksów w kolekcji.

Składnia

Podstawowa składnia metody DropIndexes () jest następująca () -

>db.COLLECTION_NAME.dropIndexes()

Przykład

Załóżmy, że utworzyliśmy 2 indeksy w nazwanej kolekcji mycol, jak pokazano poniżej -

> db.mycol.createIndex({"title":1,"description":-1})

Poniższy przykład usuwa powyższe indeksy mycol -

>db.mycol.dropIndexes({"title":1,"description":-1})
{ "nIndexesWas" : 2, "ok" : 1 }
>

Metoda getIndexes ()

Ta metoda zwraca opis wszystkich indeksów w kolekcji.

Składnia

Poniżej znajduje się podstawowa składnia metody getIndexes () -

db.COLLECTION_NAME.getIndexes()

Przykład

Załóżmy, że utworzyliśmy 2 indeksy w nazwanej kolekcji mycol, jak pokazano poniżej -

> db.mycol.createIndex({"title":1,"description":-1})

Poniższy przykład pobiera wszystkie indeksy w kolekcji mycol -

> db.mycol.getIndexes()
[
	{
		"v" : 2,
		"key" : {
			"_id" : 1
		},
		"name" : "_id_",
		"ns" : "test.mycol"
	},
	{
		"v" : 2,
		"key" : {
			"title" : 1,
			"description" : -1
		},
		"name" : "title_1_description_-1",
		"ns" : "test.mycol"
	}
]
>