sql >> Database >  >> NoSQL >> MongoDB

3 manieren om een ​​index te maken in MongoDB

In MongoDB kunt u een index voor een verzameling maken met behulp van de createIndex() methode, de createIndexes() methode, of de createIndexes administratie commando.

De createIndex() Methode

De db.collection.createIndex() methode maakt een index op de opgegeven verzameling. Het is een wrapper voor de createIndexes administratie commando.

Voorbeeld:

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

Dit creëert een index op de huisdierencollectie. Het is een dalende index op het weight veld. We weten dat het aflopend is omdat we -1 . hebben gespecificeerd . Als we 1 . hadden opgegeven het zou oplopend zijn geweest.

Een samengestelde index is een index die op meerdere velden is gedefinieerd. U kunt een samengestelde index maken door elk veld met een komma te scheiden.

Voorbeeld:

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

Dit creëert een samengestelde index op de name veld (in oplopende volgorde) en het type veld (in aflopende volgorde).

De createIndexes() Methode

De db.collection.createIndexes() methode maakt een of meer indexen op een verzameling Deze methode is ook een wrapper voor de createIndexes administratie commando.

Wanneer u indexen maakt met de createIndexes() methode, moet u de velden in een array opgeven. U moet dit zelfs doen als u maar één index maakt.

Voorbeeld:

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

Dat doet hetzelfde als het eerste voorbeeld. Het creëert een aflopende index op het weight veld.

Om meerdere indexen te maken, scheidt u het document van elke index door een komma.

Voorbeeld:

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

U kunt ook samengestelde indexen maken met createIndexes() . Om dit te doen, definieert u eenvoudig de samengestelde index in het document voor die index.

Daarom kunnen we het volgende doen:

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

Dat creëert een samengestelde index voor de name en type velden, en een aparte index voor het weight veld.

De createIndexes Commando

De createIndexes admin-opdracht maakt een of meer indexen op een verzameling. De vorige twee methoden zijn wrappers rond deze opdracht.

Daarom kunnen we de createIndexes . gebruiken commando om de indexen te maken die we in de vorige voorbeelden hebben gedaan.

Hier is een voorbeeld van het maken van een index op de name veld:

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

In de vorige voorbeelden lieten we MongoDB onze indexen een naam geven, maar in dit geval noemden we de index idx_name_1 .

Hier is een voorbeeld van het maken van meerdere indexen:

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

In dit geval is de eerste index een samengestelde index op de name en type velden, en we noemden het idx_name_1_type_-1 .

De tweede index staat op het weight veld en we noemden het idx_weight_-1 .

Wildcard-indexen

Alle drie de bovenstaande benaderingen ondersteunen wildcard-indexen vanaf MongoDB 4.2 (de featureCompatibilityVersion moet minimaal 4.2 . zijn om wildcard-indexen te maken).

Indexen met jokertekens zijn handig voor verzamelingen die ongestructureerde gegevens bevatten met verschillende velden in verschillende hiërarchieën.

Zie Een wildcard-index maken in MongoDB voor voorbeelden.

MongoDB-documentatie

Hieronder staan ​​links naar de MongoDB-documentatie voor elk van de bovenstaande:

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

  1. Vervaltijd instellen voor een verzameling in mongodb met behulp van mangoest

  2. Fout:getaddrinfo ENOTFOUND in nodejs voor get call

  3. Hoe voer ik Redis uit op Amazon OpsWorks voor een Rails-toepassing?

  4. MongoDB $mergeObjects