MongoDB – Indicizzazione

Avvisi

Gli indici supportano la risoluzione efficiente delle query. Senza indici, MongoDB deve scansionare ogni documento di una collezione per selezionare i documenti che corrispondono all’istruzione della query. Questa scansione è altamente inefficiente e richiede a MongoDB di elaborare un grande volume di dati.

Gli indici sono strutture di dati speciali, che memorizzano una piccola porzione del set di dati in una forma facile da attraversare. L’indice memorizza il valore di un campo specifico o di un insieme di campi, ordinato in base al valore del campo specificato nell’indice.

Il metodo createIndex()

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

Sintassi

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

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

Qui key è il nome del campo su cui vuoi creare l’indice e 1 è per l’ordine 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}>

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

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

Questo metodo accetta anche una lista di opzioni (che sono opzionali). La lista è la seguente –

Parametro Tipo Descrizione
background Booleano Costruisce l’indice in background in modo che la costruzione di un indice non blocchi altre attività del database. Specificare true per costruire in background. Il valore predefinito è false.
unique Boolean Crea un indice unico in modo che la collezione non accetti l’inserimento di documenti in cui la chiave o le chiavi dell’indice corrispondono a un valore esistente nell’indice. Specificare true per creare un indice unico. Il valore predefinito è false.
name stringa Il nome dell’indice. Se non specificato, MongoDB genera un nome di indice concatenando i nomi dei campi indicizzati e l’ordine di ordinamento.
sparse Boolean Se vero, l’indice fa riferimento solo ai documenti con il campo specificato. Questi indici usano meno spazio ma si comportano diversamente in alcune situazioni (in particolare gli ordinamenti). Il valore predefinito è false.
expireAfterSeconds integrale Specifica un valore, in secondi, come TTL per controllare quanto tempo MongoDB conserva i documenti in questa collezione.
pesi documento Il peso è un numero che va da 1 a 99.999 e denota l’importanza del campo rispetto agli altri campi indicizzati in termini di punteggio.
default_language stringa Per un indice di testo, la lingua che determina la lista di stop words e le regole per lo stemmer e il tokenizer. Il valore predefinito è English.
language_override string Per un indice di testo, specificare il nome del campo nel documento che contiene la lingua per sovrascrivere la lingua predefinita. Il valore predefinito è language.

Il metodo dropIndex()

È possibile eliminare un particolare indice utilizzando il metodo dropIndex() di MongoDB.

Sintassi

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

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

Qui key è il nome del file su cui vuoi creare l’indice e 1 è per l’ordine crescente. Per creare un indice in ordine decrescente devi usare -1.

Esempio

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

Il metodo dropIndexes()

Questo metodo cancella più indici (specificati) su una collezione.

Sintassi

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

>db.COLLECTION_NAME.dropIndexes()

Esempio

Assumiamo di aver creato 2 indici nella collezione chiamata mycol come mostrato qui sotto –

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

L’esempio seguente rimuove gli indici creati sopra di mycol –

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

Il metodo getIndexes()

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

Sintassi

Di seguito la sintassi di base del metodo getIndexes() –

db.COLLECTION_NAME.getIndexes()

Esempio

Assumiamo di aver creato 2 indici nella collezione mycol come mostrato sotto –

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

L’esempio seguente recupera tutti gli indici nella collezione mycol –

> db.mycol.getIndexes()>
Pubblicità

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.