Indeksit tukevat kyselyiden tehokasta ratkaisemista. Ilman indeksejä MongoDB:n on skannattava kokoelman jokainen dokumentti valitakseen ne dokumentit, jotka vastaavat kyselylauseeseen. Tämä skannaus on erittäin tehotonta ja vaatii MongoDB:ltä suuren tietomäärän käsittelyä.
Indeksit ovat erityisiä tietorakenteita, jotka tallentavat pienen osan tietoaineistosta helposti läpikäytävässä muodossa. Indeksiin tallennetaan tietyn kentän tai kenttäjoukon arvo, joka on järjestetty indeksissä määritellyn kentän arvon mukaan.
The createIndex()-metodi
Indeksin luomiseksi on käytettävä MongoDB:n createIndex()-metodia.
Syntaksi
Metodin createIndex() perussyntaksi on seuraava().
>db.COLLECTION_NAME.createIndex({KEY:1})
Tässä key on sen kentän nimi, jolle halutaan luoda indeksi ja 1 on nousevaa järjestystä varten. Jos haluat luoda indeksin laskevassa järjestyksessä, sinun on käytettävä -1.
Esimerkki
>db.mycol.createIndex({"title":1}){"createdCollectionAutomatically" : false,"numIndexesBefore" : 1,"numIndexesAfter" : 2,"ok" : 1}>
In createIndex()-metodilla voit luovuttaa useita kenttiä, jotta voit luoda indeksin useille kentille.
>db.mycol.createIndex({"title":1,"description":-1})>
Tämä metodi hyväksyy myös luettelon valinnaisista vaihtoehdoista (jotka ovat valinnaisia). Seuraavassa on luettelo –
Parametri | Tyyppi | Kuvaus |
---|---|---|
tausta | Boolean | Rakentaa indeksin taustalla, jotta indeksin rakentaminen ei estäisi muita tietokannan toimintoja. Määritä true, jos haluat rakentaa indeksin taustalla. Oletusarvo on false. |
unique | Boolean | Luo yksilöllisen indeksin, jotta kokoelma ei hyväksy sellaisten asiakirjojen lisäämistä, joiden indeksiavain tai -avaimet vastaavat indeksissä jo olevaa arvoa. Määritä true, jos haluat luoda yksilöllisen indeksin. Oletusarvo on false. |
name | string | Indexin nimi. Jos sitä ei määritetä, MongoDB luo indeksin nimen ketjuttamalla indeksoitavien kenttien nimet ja lajittelujärjestyksen. | sparse | Boolean | Jos true, indeksi viittaa vain dokumentteihin, joissa on määritelty kenttä. Nämä indeksit käyttävät vähemmän tilaa, mutta käyttäytyvät eri tavalla joissakin tilanteissa (erityisesti lajittelussa). Oletusarvo on false. |
expireAfterSeconds | integer | Määrittää TTL-arvona arvon sekunneissa, jolla ohjataan, kuinka kauan MongoDB säilyttää dokumentteja tässä kokoelmassa. |
painot | dokumentti | Paino on luku, joka vaihtelee 1:n ja 99,999:n välillä, ja se ilmaisee kentän merkityksen suhteessa muihin indeksoituihin kenttiin pisteytyksen kannalta. |
default_language | string | Teksti-indeksin osalta kieli, joka määrittää stop-sanojen luettelon sekä stemmerin ja tokenisaattorin säännöt. Oletusarvo on englanti. |
language_override | string | Teksti-indeksille määritetään sen asiakirjan kentän nimi, joka sisältää kielen, jolla oletuskieli ohitetaan. Oletusarvo on language. |
The dropIndex()-metodi
Voit pudottaa tietyn indeksin käyttämällä MongoDB:n dropIndex()-metodia.
Syntaksi
DropIndex()-metodin perussyntaksi on seuraava().
>db.COLLECTION_NAME.dropIndex({KEY:1})
Tässä key on sen tiedoston nimi, johon halutaan luoda indeksi ja 1 on nousevassa järjestyksessä. Jos haluat luoda indeksin laskevassa järjestyksessä, sinun on käytettävä -1.
Esimerkki
> db.mycol.dropIndex({"title":1}){"ok" : 0,"errmsg" : "can't find index with key: { title: 1.0 }","code" : 27,"codeName" : "IndexNotFound"}
DropIndexes()-metodi
Tämä metodi poistaa useita (määritettyjä) indeksejä kokoelmasta.
Syntaksi
DropIndexes()-metodin perussyntaksi on seuraava() –
>db.COLLECTION_NAME.dropIndexes()
Esimerkki
Asettakaamme, että olemme luoneet 2 indeksiä nimettyyn mycol-kokoelmaan alla olevan kuvan mukaisesti. –
> db.mycol.createIndex({"title":1,"description":-1})
Seuraava esimerkki poistaa edellä luodut mycol-indeksit –
>db.mycol.dropIndexes({"title":1,"description":-1}){ "nIndexesWas" : 2, "ok" : 1 }>
Metodi getIndexes()
Tämä metodi palauttaa kaikkien kokoelmassa olevien indeksien kuvauksen.
Syntaksi
Seuraavassa on getIndexes()-metodin perussyntaksi –
db.COLLECTION_NAME.getIndexes()
Esimerkki
Asettakaamme, että olemme luoneet 2 indeksiä nimettyyn mycoliin. kokoelmassa alla esitetyllä tavalla –
> db.mycol.createIndex({"title":1,"description":-1})
Seuraava esimerkki hakee kaikki indeksit kokoelmassa mycol –
> db.mycol.getIndexes()>