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 tu avessi una collezione con migliaia di documenti senza indici, e poi fai una query per trovare certi documenti, allora in tal caso MongoDB avrebbe bisogno di scansionare l’intera collezione per trovare i documenti. Ma se aveste degli indici, MongoDB userebbe questi indici per limitare il numero di documenti da cercare nella collezione.

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

In questo tutorial, imparerete –

  • Capire l’impatto degli indici
  • Come creare gli indici: createIndex()
  • Come trovare gli indici: getindexes()
  • Come eliminare gli indici: dropindex()

Capire l’impatto degli indici

Ora anche se dall’introduzione abbiamo visto che gli indici sono buoni per le query, ma avere troppi indici può rallentare altre operazioni come Insert, Delete e Update.

Se ci sono frequenti operazioni di insert, delete e update effettuate sui documenti, allora gli indici dovrebbero cambiare spesso, il che sarebbe solo un overhead per la collezione.

L’esempio seguente mostra un esempio di quali valori di campo potrebbero costituire un indice in una collezione. Un indice può essere basato su un solo campo dell’insieme, o può essere basato su più campi dell’insieme.

Nell’esempio seguente, l’Employeeid “1” e EmployeeCode “AA” sono usati per indicizzare i documenti nell’insieme. Così, quando viene fatta una ricerca, questi indici saranno usati per trovare rapidamente ed efficacemente i documenti richiesti nella collezione.

Così anche se la query di ricerca è basata sull’EmployeeCode “AA”, quel documento verrebbe restituito.

Come creare indici: createIndex()

Creare un indice in MongoDB è fatto usando il metodo “createIndex”.

L’esempio seguente mostra come aggiungere un indice alla collezione. Supponiamo di avere la nostra stessa collezione Employee che ha i nomi dei campi “Employeeid” e “EmployeeName”.

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

Codice Spiegazione:

  1. Il metodo createIndex è usato per creare un indice basato su “Employeeid” del documento.
  2. Il parametro ‘1’ indica che quando l’indice è creato con i valori del campo “Employeeid”, dovrebbero essere ordinati in ordine crescente. Si prega di notare che questo è diverso dal campo _id (Il campo id è utilizzato per identificare in modo univoco ogni documento nella collezione) che viene creato automaticamente nella collezione da MongoDB. I documenti saranno ora ordinati in base all’Employeeid e non al campo _id.

Se il comando viene eseguito con successo, verrà mostrato il seguente output:

Output:

  1. Il numIndexesBefore: 1 indica il numero di valori di campo (i campi effettivi nella collezione) che erano presenti negli indici prima dell’esecuzione del comando. Ricordate che ogni collezione ha il campo _id che conta anche come valore di campo per l’indice. Poiché il campo _id fa parte dell’insieme quando viene creato inizialmente, il valore di numIndexesBefore è 1.
  2. Il numIndexesAfter: 2 indica il numero di valori di campo che erano presenti negli indici dopo l’esecuzione del comando.
  3. Qui l’output “ok: 1” specifica che l’operazione ha avuto successo, e il nuovo indice viene aggiunto alla collezione.

Il codice sopra mostra come creare un indice basato su un valore di campo, ma si può anche creare un indice basato su più valori di campo.

L’esempio seguente mostra come questo può essere fatto;

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

Spiegazione del codice:

  1. Il metodo createIndex ora prende in considerazione valori di campi multipli che ora causeranno la creazione dell’indice in base a “Employeeid” e “EmployeeName”. Employeeid:1 e EmployeeName:1 indicano che l’indice dovrebbe essere creato su questi 2 valori di campo con il :1 che indica che dovrebbe essere in ordine crescente.

Come trovare gli indici: getindexes()

Trovare un indice in MongoDB è fatto usando il metodo “getIndexes”.

L’esempio seguente mostra come questo può essere fatto;

db.Employee.getIndexes()

Codice Spiegazione:

  1. Il metodo getIndexes è usato per trovare tutti gli indici in una collezione.

Se il comando viene eseguito con successo, verrà mostrato il seguente output:

Output:

  1. L’output restituisce un documento che mostra solo che ci sono 2 indici nella collezione che è il campo _id, e l’altro è il campo id Employee. Il :1 indica che i valori dei campi nell’indice sono creati in ordine crescente.

Come eliminare gli indici: dropindex()

Rimuovere un indice in MongoDB è fatto usando il metodo dropIndex.

L’esempio seguente mostra come questo può essere fatto;

db.Employee.dropIndex(Employeeid:1)

Codice Spiegazione:

  1. Il metodo dropIndex prende i valori dei campi richiesti che devono essere rimossi dall’indice.

Se il comando viene eseguito con successo, verrà mostrato il seguente output:

Output:

  1. Il nIndexesWas: 3 indica il numero di valori di campo che erano presenti negli indici prima dell’esecuzione del comando. Ricordate che ogni collezione ha il campo _id che conta anche come un valore Field per l’indice.
  2. L’ok: 1 specifica che l’operazione ha avuto successo, e il campo “Employeeid” è stato rimosso dall’indice.

Per rimuovere tutti gli indici in una volta nella collezione, si può usare il comando dropIndexes.

L’esempio seguente mostra come questo può essere fatto.

db.Employee.dropIndex()

Codice Spiegazione:

  1. Il metodo dropIndexes eliminerà tutti gli indici tranne l’indice _id.

Se il comando viene eseguito con successo, verrà mostrato il seguente output:

Output:

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

Summary

  • La definizione degli indici è importante per una ricerca più veloce ed efficiente dei documenti in una collezione.
  • 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 usando il metodo getIndexes.
  • Gli indici possono essere rimossi usando dropIndex per indici singoli o dropIndexes per eliminare tutti gli indici.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.