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

3 måder at oprette et indeks på i MongoDB

I MongoDB kan du oprette et indeks på en samling ved hjælp af createIndexes() metoden createIndexes() metoden eller createIndexes administrationskommando.

createIndexes() Metode

db.collection.createIndexes() metoden opretter et indeks på den angivne samling. Det er en indpakning for createIndexes administrationskommando.

Eksempel:

db.pets.createIndex( { weight: -1 } )

Dette opretter et indeks over kæledyrssamlingen. Det er et faldende indeks på weight Mark. Vi ved, at den er faldende, fordi vi har specificeret -1 . Hvis vi havde angivet 1 det ville have været stigende.

Et sammensat indeks er et, der er defineret på flere felter. Du kan oprette et sammensat indeks ved at adskille hvert felt med et komma.

Eksempel:

db.pets.createIndex( { name: 1, type: -1 } )

Dette opretter et sammensat indeks på name feltet (i stigende rækkefølge) og type felt (i faldende rækkefølge).

createIndexes() Metode

db.collection.createIndexes() metoden opretter et eller flere indekser på en samling. Denne metode er også en indpakning for createIndexes administrationskommando.

Når du opretter indekser med createIndexes() metode, skal du angive felterne i et array. Du skal gøre dette, selvom du kun opretter et enkelt indeks.

Eksempel:

db.pets.createIndexes( [ { weight: -1 } ] )

Det gør det samme, som det første eksempel gør. Det opretter et faldende indeks på weight felt.

For at oprette flere indekser skal du adskille hvert indekss dokument med et komma.

Eksempel:

db.pets.createIndexes( [ { name: 1 }, { weight: -1 } ] )

Du kan også oprette sammensatte indekser med createIndexes() . For at gøre dette skal du blot definere det sammensatte indeks i dokumentet for det indeks.

Derfor kunne vi gøre følgende:

db.pets.createIndexes( [ { name: 1, type: -1 }, { weight: -1 } ] )

Det opretter et sammensat indeks for name og type felter og et separat indeks for weight felt.

createIndexes Kommando

createIndexes administrationskommando opretter et eller flere indekser på en samling. De to foregående metoder er indpakninger omkring denne kommando.

Derfor kan vi bruge createIndexes kommando for at oprette de indekser, som vi lavede i de foregående eksempler.

Her er et eksempel på oprettelse af et indeks på name felt:

db.runCommand(
  {
    createIndexes: "pets",
    indexes: [
      {
        key: { "name" : 1 },
        name: "idx_name_1"
      }
    ]
  }
)

I de foregående eksempler lod vi MongoDB navngive vores indekser, men i dette tilfælde navngav vi indekset idx_name_1 .

Her er et eksempel på oprettelse af flere indekser:

db.runCommand(
  {
    createIndexes: "pets",
    indexes: [
      {
        key: { "name" : 1, type: -1 },
        name: "idx_name_1_type_-1"
      },
      {
        key: { "weight" : -1 },
        name: "idx_weight_-1"
      }
    ]
  }
)

I dette tilfælde er det første indeks et sammensat indeks på name og type felter, og vi kaldte det idx_name_1_type_-1 .

Det andet indeks er på weight felt, og vi kaldte det idx_weight_-1 .

Jokertegnindekser

Alle tre af ovenstående tilgange understøtter jokertegnindekser fra MongoDB 4.2 (featureCompatibilityVersion skal være mindst 4.2 for at oprette jokertegnindekser).

Wildcard-indekser er nyttige til samlinger, der indeholder ustrukturerede data med forskellige felter i forskellige hierarkier.

Se hvordan man opretter et wildcard-indeks i MongoDB for eksempler.

MongoDB-dokumentation

Nedenfor er links til MongoDB-dokumentationen for hver af ovenstående:

  • db.collection.createIndexes()
  • db.collection.createIndexes()
  • createIndexes

  1. Kan jeg bruge Tornado+ Selleri+ RabbitMQ + Redis?

  2. Har mongoDB problemer med genforbindelse, eller gør jeg det forkert?

  3. MongoDB $trunc

  4. Mongo Query spørgsmål $gt,$lt