Un indice in MongoDB è una struttura dati speciale che contiene i dati di pochi campi di documenti su cui viene creato l’indice. Gli indici migliorano la velocità delle operazioni di ricerca nel database perché invece di cercare l’intero documento, la ricerca viene eseguita sugli indici che contengono solo pochi campi. D’altra parte, avere troppi indici può ostacolare le prestazioni delle operazioni di inserimento, aggiornamento ed eliminazione a causa della scrittura aggiuntiva e dello spazio dati aggiuntivo utilizzato dagli indici.
Come creare indice in MongoDB
Sintassi:
db.collection_name.createIndex({field_name: 1 or -1})
Il valore 1 è per ordine crescente e -1 è per ordine decrescente.
Ad esempio, ho una raccolta studentdata
. I documenti all’interno di questa raccolta hanno i seguenti campi:
student_name, student_id e student_age
Diciamo che voglio creare l’indice sul campo student_name in ordine crescente:
db.studentdata.createIndex({student_name: 1})
Output:
{ "createdCollectionAutomatically" : false, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1}
Abbiamo creato l’indice student_name il che significa che quando qualcuno cerca il documento in base al student_name, la ricerca sarà più veloce perché l’indice viene utilizzato per questa ricerca. Quindi questo è importante per creare l’indice sul campo che verrà cercato frequentemente in una raccolta.
MongoDB – Trovare gli indici in una raccolta
Possiamo usare il metodo getIndexes() per trovare tutti gli indici creati su una raccolta. La sintassi per questo metodo è:
db.collection_name.getIndexes()
Quindi per ottenere gli indici distudentdata
raccolta, il comando sarebbe:
> db.studentdata.getIndexes()
L’output mostra che abbiamo due indici in questa raccolta. L’indice predefinito creato su _id e l’indice che abbiamo creato sul campo student_name.
MongoDB – Drop indices in una raccolta
È possibile eliminare un particolare indice o tutti gli indici.
Cadere un indice specifico:
A questo scopo viene utilizzato il metodo dropIndex ().
db.collection_name.dropIndex({index_name: 1})
Lascia cadere l’indice che abbiamo creato su student_name
campo nella raccolta studentdata
. Il comando per questo:
db.studentdata.dropIndex({student_name: 1})
nIndexesWas: Mostra quanti indici c’erano prima che questo comando venisse eseguito
ok: 1: Questo significa che il comando viene eseguito correttamente.
Eliminare tutti gli indici:
Per eliminare tutti gli indici di una raccolta, usiamo il metodo dropIndexes ().
Sintassi del metodo dropIndexs ():
db.collection_name.dropIndexes()
Diciamo che vogliamo eliminare tutti gli indici della raccolta studentdata
.
db.studentdata.dropIndexes()
Il messaggio “indici non-_id eliminati per la raccolta” indica che l’indice _id predefinito rimarrà e non può essere eliminato. Ciò significa che usando questo metodo possiamo solo eliminare gli indici che abbiamo creato, non possiamo eliminare l’indice predefinito creato sul campo _id.