MongoDB Tutorial sull'indicizzazione: esempio createIndex(), dropindex()

Gli indici sono molto importanti in qualsiasi database e con MongoDB non è diverso. Con l'uso degli indici, l'esecuzione di query in MongoDB diventa più efficiente.

Se disponi di una raccolta con migliaia di documenti senza indici e quindi esegui una query per trovare determinati documenti, in tal caso MongoDB sarebbe necessario scansionare l'intera collezione per trovare i documenti. Ma se avessi gli indici, MongoDB utilizzerebbe questi indici per limitare il numero di documenti da cercare nella raccolta.

Gli indici sono set di dati speciali che memorizzano una parte parziale dei dati della raccolta. Poiché i dati sono parziali, diventa più facile leggerli. Questo insieme parziale memorizza il valore di un campo specifico o un insieme di campi ordinati in base al valore del campo.

Comprendere l'impatto degli indici

Ora, anche se dall'introduzione abbiamo visto che gli indici sono utili per le query, ma avere troppi indici può rallentare altre operazioni come l'operazione di inserimento, eliminazione e aggiornamento.

Se vengono eseguite frequenti operazioni di inserimento, eliminazione e aggiornamento sui documenti, gli indici dovrebbero essere modificati così spesso, il che rappresenterebbe solo un sovraccarico per la raccolta.

L'esempio seguente mostra un esempio di quali valori di campo potrebbero costituire un indice in una raccolta. Un indice può essere basato su un solo campo nella raccolta oppure su più campi nella raccolta.

Nell'esempio seguente, Employeeid "1" e EmployeeCode "AA" vengono utilizzati per indicizzare i documenti nella raccolta. Pertanto, quando viene effettuata una ricerca tramite query, questi indici verranno utilizzati per trovare in modo rapido ed efficiente i documenti richiesti nella raccolta.

Pertanto, anche se la query di ricerca è basata su EmployeeCode “AA”, verrà restituito quel documento.

Comprendere l'impatto degli indici

Come creare indici: createIndex()

Creazione di un indice in MongoDB viene fatto utilizzando il "createIndex" metodo.

L'esempio seguente mostra come aggiungere un indice alla raccolta. Supponiamo di avere la nostra stessa raccolta Employee che ha i nomi Field di "Employeeid" e "EmployeeName".

Crea indici: createIndex()

db.Employee.createIndex({Employeeid:1})

Spiegazione del codice:

  1. Il createIndex Il metodo viene utilizzato per creare un indice basato sull'"Employeeid" del documento.
  2. Il parametro '1' indica che quando l'indice viene creato con i valori del campo "Employeeid", questi devono essere ordinati in ordine crescente. Tieni presente che questo è diverso dal campo _id (il campo id viene utilizzato per identificare in modo univoco ciascun documento nella raccolta) che viene creato automaticamente nella raccolta da MongoDB. I documenti verranno ora ordinati in base al campo Employeeid e non al campo _id.

Se il comando viene eseguito correttamente, verrà visualizzato il seguente output:

Produzione:

Crea indici: createIndex()

  1. Il numIndexesBefore: 1 indica il numero di valori Field (i campi effettivi nella raccolta) che erano presenti negli indici prima dell'esecuzione del comando. Ricorda che ogni raccolta ha il campo _id che conta anche come valore Campo nell'indice. Poiché il campo dell'indice _id fa parte della raccolta al momento della creazione iniziale, il valore di numIndexesBefore è 1.
  2. numIndexesAfter: 2 indica il numero di valori di campo presenti negli indici dopo l'esecuzione del comando.
  3. Qui l'output "ok: 1" specifica che l'operazione è andata a buon fine e il nuovo indice viene aggiunto alla raccolta.

Il codice precedente mostra come creare un indice basato su un valore di campo, ma è anche possibile creare un indice basato su più valori di campo.

L'esempio seguente mostra come ciò può essere fatto;

Crea indici: createIndex()

db.Employee.createIndex({Employeeid:1, EmployeeName:1])

Spiegazione del codice:

  • Il metodo createIndex ora prende in considerazione più valori di campo che ora causeranno la creazione dell'indice in base a "Employeeid" e "EmployeeName". Employeeid:1 e EmployeeName:1 indicano che l'indice deve essere creato su questi 2 valori di campo con :1 che indica che dovrebbe essere in ordine crescente.

Come trovare gli indici: getindexes()

Trovare un indice in MongoDB viene eseguito utilizzando il file “getIndex” metodo.

L'esempio seguente mostra come ciò può essere fatto;

Trova indici: getindexes()

db.Employee.getIndexes()

Spiegazione del codice:

  • Il metodo getIndexes viene utilizzato per trovare tutti gli indici in una raccolta.

Se il comando viene eseguito correttamente, verrà visualizzato il seguente output:

Produzione:

Trova indici: getindexes()

  • L'output restituisce un documento che mostra semplicemente che ci sono 2 indici nella raccolta che è il campo _id e l'altro è il campo ID dipendente. Il :1 indica che i valori dei campi nell'indice vengono creati in ordine crescente.

Come eliminare gli indici: dropindex()

Rimozione di un indice in MongoDB viene eseguito utilizzando il metodo dropIndex.

L'esempio seguente mostra come ciò può essere fatto;

Indici di rilascio: dropindex()

db.Employee.dropIndex(Employeeid:1)

Spiegazione del codice:

  • Il metodo dropIndex accetta i valori del campo richiesti che devono essere rimossi dall'indice.

Se il comando viene eseguito correttamente, verrà visualizzato il seguente output:

Produzione:

Indici di rilascio: dropindex()

  1. nIndexesWas: 3 indica il numero di valori di campo presenti negli indici prima dell'esecuzione del comando. Ricorda che ogni raccolta ha il campo _id che conta anche come valore Campo nell'indice.
  2. L'output ok: 1 specifica che l'operazione ha avuto successo e il campo "Employeeid" viene rimosso dall'indice.

Per rimuovere tutti gli indici contemporaneamente nella raccolta, è possibile utilizzare il comando dropIndexes.

L'esempio seguente mostra come farlo.

Indici di rilascio: dropindex()

db.Employee.dropIndex()

Spiegazione del codice:

  • Il metodo dropIndexes eliminerà tutti gli indici tranne l'indice _id.

Se il comando viene eseguito correttamente, verrà visualizzato il seguente output:

Produzione:

Indici di rilascio: dropindex()

  1. nIndexesWas: 2 indica il numero di valori di campo presenti negli indici prima dell'esecuzione del comando.
  2. Ricorda ancora che ogni raccolta ha il campo _id che conta anche come valore Campo per l'indice e che non verrà rimosso da MongoDB e questo è ciò che indica questo messaggio.
  3. L'output ok: 1 specifica che l'operazione ha avuto successo.

Sommario

  • La definizione degli indici è importante per una ricerca più rapida ed efficiente dei documenti in una raccolta.
  • Gli indici possono essere creati utilizzando il metodo createIndex. Gli indici possono essere creati su un solo campo o su più valori di campo.
  • Gli indici possono essere trovati utilizzando il metodo getIndexes.
  • Gli indici possono essere rimossi utilizzando dropIndex per singoli indici o dropIndexes per eliminare tutti gli indici.