English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Indici MongoDB

Gli indici supportano l'elaborazione efficiente delle query. Senza indici, MongoDB deve scansionare ogni documento della raccolta per selezionare i documenti che corrispondono all'istruzione di query. Questa scansione è molto inefficiente e richiede che MongoDB elabori grandi quantità di dati.
Un indice è una struttura dati speciale che memorizza una piccola parte del set di dati in un formato facile da esplorare. L'indice memorizza i valori di un campo o di una raccolta di campi, ordinati secondo il valore specificato nell'indice.

Il metodo createIndex()

Per creare un indice, devi utilizzare il metodo createIndex() di MongoDB.

Sintassi

createIndex()La sintassi di base del metodo è ().

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

Qui, KEY è il nome del campo su cui creare l'indice, 1 indica l'ordinamento crescente. Per creare un indice in ordine decrescente, devi usare -1.

Esempio

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

IncreateIndex()Nel metodo, puoi passare più campi per creare un indice su più campi.

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

createIndex() accetta parametri opzionali, l'elenco dei parametri opzionali è il seguente:

ParametroTipoDescrizione
backgroundBooleanIl processo di creazione dell'indice blocca altre operazioni del database, background può specificare di creare l'indice in modo后台, ovvero aggiungere "background"   Parametro opzionale. "background" Il valore predefinito èfalse.
uniqueBooleanL'indice creato è univoco. Specificare true per creare un indice univoco. Il valore predefinito èfalse.
namestringIl nome dell'indice. Se non specificato, MongoDB genera un nome dell'indice attraverso il nome del campo dell'indice e l'ordine di ordinamento.
dropDupsBoolean3.0+ versione è stata abbandonata.Al creare un indice univoco, eliminare i record duplicati, specificare true per creare un indice univoco. Il valore predefinito è false.
sparseBooleanNon abilitare l'indice per i dati dei campi non esistenti nel documento; questo parametro deve essere prestato attenzione, se impostato su true, non verranno queryati i documenti che non contengono il campo corrispondente nell'indice. Il valore predefinito è false.
expireAfterSecondsintegerSpecificare un valore numerico in secondi, completare la configurazione TTL, impostare la durata di vita della collezione.
vversione dell'indiceVersione dell'indice. La versione predefinita dell'indice dipende dalla versione del mongod utilizzata per creare l'indice.
weightsdocumentValore di peso dell'indice, numero tra 1 e 99,999, che rappresenta il peso del campo dell'indice rispetto agli altri campi degli indici.
default_languagestringPer gli indici di testo, questo parametro determina l'elenco delle regole di disattivazione delle parole di stop e delle radici e dei morfemi. Il valore predefinito è in inglese
language_overridestringPer gli indici di testo, questo parametro specifica il nome del campo contenuto nel documento, la copertura linguistica predefinita è il linguaggio, il valore predefinito è language.

metodo dropIndex()

Puoi utilizzare il metodo dropIndex() di MongoDB per eliminare un indice specifico.

Sintassi

La sintassi di base del metodo DropIndex() è la seguente ()。

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

In questo caso, la chiave è il nome del file sul quale si desidera creare l'indice, mentre 1 indica l'ordinamento crescente. Per creare un indice in ordine decrescente, è necessario utilizzare -1.

Esempio

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

metodo dropIndexes()

Questo metodo elimina più (specificati) indici sulla collezione.

Sintassi

La sintassi di base del metodo DropIndexes() è la seguente ()-

>db.COLLECTION_NAME.dropIndexes()

Esempio

Supponiamo che abbiamo creato 2 indici nella collezione denominata mycol come segue:

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

Esempio seguente elimina l'indice mycol creato in precedenza:

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

metodo getIndexes()

Questo metodo restituisce la descrizione di tutti gli indici nella raccolta.

Sintassi

Ecco la sintassi di base del metodo getIndexes() -

db.COLLECTION_NAME.getIndexes()

Esempio

Supponiamo di aver creato 2 indici nel setto mycol denominato, come segue -

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

Esempio di ricerca di tutti gli indici della raccolta 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"
	}
]
>