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" )