MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

3 modi per creare un indice in MongoDB

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