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