Questo capitolo introduce gli indici MongoDB. Similmente a MYSQL, MongoDB supporta anche gli indici. La differenza è che MongoDB supporta l'aggiunta di indici a qualsiasi campo nidificato della struttura JSON, con lo stesso scopo di migliorare l'efficienza delle query.

Tipi di Indici MongoDB

Indice su Singolo Campo

Similmente a MYSQL, è possibile creare un indice per un singolo campo.

Formato:

db.collection.createIndex( { nome_campo: direzione_ordinamento(1 o -1) } )

Nota: La direzione di ordinamento 1 rappresenta l'ordinamento ascendente, mentre -1 rappresenta l'ordinamento discendente.

Esempio 1:

db.records.createIndex( { punteggio: 1 } )

Crea un indice per il campo punteggio.

Esempio 2:

db.records.createIndex( { "località.stato": 1 } )

Crea un indice per il campo JSON nidificato località.stato.

Indice Composto

Similmente a MYSQL, è possibile combinare più campi per creare un indice, accelerando la velocità delle query composite.

Formato:

db.collection.createIndex( { <campo1>: <tipo>, <campo2>: <tipo2>, ... } )

Esempio:

db.prodotti.createIndex( { "articolo": 1, "stock": 1 } )

Crea un indice composto per i campi articolo e stock, entrambi in ordine ascendente (il 1 rappresenta l'ordinamento ascendente).

Indice Testuale (Indice full-text)

L'indice testuale (testo) viene principalmente utilizzato per supportare la ricerca full-text.

Nota: Una collezione consente un solo indice testuale, ma un indice testuale può includere più campi.

Esempio:

db.negozio.createIndex( { nome: "text", descrizione: "text" } )

Crea un indice full-text testuale per i campi nome e descrizione.

Nota: Per ulteriori dettagli, consulta la sezione Indice Full Text.

Indice Spaziale (Indice GEO)

Utilizzato principalmente per supportare le query relative alle informazioni geografiche, supportando principalmente due tipi di indici: 2dsphere e 2d. Per ulteriori dettagli, consulta la sezione Query Geospaziali.

Eliminazione degli Indici

Per elencare tutti gli indici in una collezione:

db.animali.getIndexes()

Per eliminare l'indice catIdx dalla collezione animali:

db.animali.dropIndex( "catIdx" )