In MongoDB, puoi creare un indice su una raccolta usando createIndex()
metodo, il createIndexes()
o il metodo createIndexes
comando di amministrazione.
Il createIndex()
Metodo
Il db.collection.createIndex()
il metodo crea un indice sulla raccolta specificata. È un wrapper per createIndexes
comando di amministrazione.
Esempio:
db.pets.createIndex( { weight: -1 } )
Questo crea un indice sulla collezione di animali domestici. È un indice decrescente sul weight
campo. Sappiamo che sta discendendo perché abbiamo specificato -1
. Se avessimo specificato 1
sarebbe stato ascendente.
Un indice composto è definito su più campi. Puoi creare un indice composto separando ogni campo con una virgola.
Esempio:
db.pets.createIndex( { name: 1, type: -1 } )
Questo crea un indice composto su name
campo (in ordine crescente) e il type
campo (in ordine decrescente).
Il createIndexes()
Metodo
Il db.collection.createIndexes()
il metodo crea uno o più indici su una raccolta Questo metodo è anche un wrapper per createIndexes
comando di amministrazione.
Quando crei indici con createIndexes()
metodo, è necessario fornire i campi in una matrice. Devi farlo anche se stai creando un solo indice.
Esempio:
db.pets.createIndexes( [ { weight: -1 } ] )
Questo fa la stessa cosa che fa il primo esempio. Crea un indice decrescente sul weight
campo.
Per creare più indici, separa ogni documento di indice con una virgola.
Esempio:
db.pets.createIndexes( [ { name: 1 }, { weight: -1 } ] )
Puoi anche creare indici composti con createIndexes()
. Per fare ciò, definisci semplicemente l'indice composto all'interno del documento per quell'indice.
Pertanto, potremmo fare quanto segue:
db.pets.createIndexes( [ { name: 1, type: -1 }, { weight: -1 } ] )
Questo crea un indice composto per il name
e type
campi e un indice separato per il weight
campo.
Il createIndexes
Comando
Il createIndexes
comando di amministrazione crea uno o più indici su una raccolta I due metodi precedenti sono wrapper attorno a questo comando.
Pertanto, possiamo utilizzare createIndexes
comando per creare gli indici che abbiamo fatto negli esempi precedenti.
Ecco un esempio di creazione di un indice su name
campo:
db.runCommand(
{
createIndexes: "pets",
indexes: [
{
key: { "name" : 1 },
name: "idx_name_1"
}
]
}
)
Negli esempi precedenti lasciamo che MongoDB denomini i nostri indici, ma in questo caso abbiamo chiamato l'indice idx_name_1
.
Ecco un esempio di creazione di più indici:
db.runCommand(
{
createIndexes: "pets",
indexes: [
{
key: { "name" : 1, type: -1 },
name: "idx_name_1_type_-1"
},
{
key: { "weight" : -1 },
name: "idx_weight_-1"
}
]
}
)
In questo caso, il primo indice è un indice composto sul name
e type
campi e lo abbiamo chiamato idx_name_1_type_-1
.
Il secondo indice è sul weight
campo e lo abbiamo chiamato idx_weight_-1
.
Indici jolly
Tutti e tre gli approcci precedenti supportano gli indici con caratteri jolly a partire da MongoDB 4.2 (la featureCompatibilityVersion
deve essere almeno 4.2
per creare indici con caratteri jolly).
Gli indici con caratteri jolly sono utili per raccolte che contengono dati non strutturati con campi diversi in gerarchie diverse.
Vedi Come creare un indice con caratteri jolly in MongoDB per esempi.
Documentazione MongoDB
Di seguito sono riportati i collegamenti alla documentazione di MongoDB per ciascuno dei precedenti:
db.collection.createIndex()
db.collection.createIndexes()
createIndexes