Nagu iga andmebaasi puhul, on indeksid MongoDB olulised andmestruktuurid. Need soodustavad lihtsaid andmebaasipäringuid ning võimaldavad teil salvestada ja korraldada osa oma kollektsioonist ainulaadsetel väljadel. Indeksid toetavad ka vahemiku päringuid ilma tõrgeteta.
Kui teie rakendus kasutab MongoDB-d, soovite päringute kiiremaks ja tõhusamaks muutmiseks kasutada indeksite võimsust. Mis on MongoDB indeksid ja kuidas saate neid luua?
Mis on MongoDB indeksid?
MongoDB indeksid võimaldavad teil dokumendis mõningaid välju tähtsuse järjekorda seada ja hiljem päringuparameetriteks muuta. Kogu loomisel loob MongoDB vaikimisi ID-indeksi. Kuid võite lisada rohkem, kui teil on suuremaid päringuid või korraldusvajadusi.
Unikaalsed indeksid takistavad ka dubleerimist andmete sisestamise ajal. Need on kasulikud andmebaasis juba olemasolevate kirjete tagasilükkamiseks. Nii saate näiteks kasutajanimede ja e-posti väljade puhul kasutada ainulaadset indekseerimist.
Indeksid aitavad teil konkreetselt soovitud päringuvormingu abil hankida vajaliku koguse, ilma tervet kogu skannimata. Indeksi loomisel saate määrata, kuidas soovite oma andmeid iga kord päringu tegemisel sortida.
Näiteks kui otsustate sortida andmepunkte nende sisestamise kuupäevade järgi ilma indeksit kasutamata, esitate tavaliselt päringukriteeriumid ja sortimisjärjestuse.
Oletame, et soovite teatud arvust suuremad vanused järjestada kannete kahaneva kuupäeva järgi. Teie päring näeb tavaliselt välja selline:
db.collectionName.find({vanus: {$gt: 50}}).sort({kuupäev: -1})
Kuid kui teil oli sisestamise kuupäevade jaoks register, peaksite esitama ainult päringukriteeriumid. Põhjus on selles, et olete indeksi loomise ajal juba kuupäeva kahanevalt sortinud.
Sel juhul muutub ülaltoodud päring:
db.collectionName.find({vanus: {$gt: 50}})
Kuidas MongoDB-s indeksit luua
Saate luua MongoDB-s indekseid, kasutades selle sisseehitatud shelli liidest. Seda me selles õpetuses kasutamegi.
Sellegipoolest ei eksisteeri indeksid üksi. Sa pidid olema lõi andmebaasi ja kogu enne indeksi loomist.
Nagu me varem mainisime, on indekseerimise silmapaistev omadus see, et see võimaldab teil indeksi loomise ajal määrata sortimiskriteeriume.
Näiteks indeks, mis korraldab vanuse vastupidises järjekorras, näeb välja järgmine:
db.userCollection.createIndex({vanus: -1})
Negatiivne täisarv (-1) käsib koodis MongoDB-l korraldada vanuse vastupidises järjekorras, kui küsite andmeid kasutades vanus indeks. Seega ei pruugi teil olla vaja päringute ajal sortimisjärjekorda määrata, kuna register tegeleb sellega juba.
Sama välja indeksi loomiseks kasvavalt asendage -1 koos 1:
db.userCollection.createIndex({vanus: 1})
Kuigi MongoDB-s on ka teisi indeksitüüpe, saate nii üksik- ja liitvorme luua, kuna neid kasutatakse kõige rohkem.
Kuid enne kui jätkame, veenduge, et olete seadistage MongoDB server teie arvutis. Kui olete seda juba teinud, avage MongoDB kest ja järgige seda.
Looge MongoDB-s üks indeks
MongoDB-s on ühekordne indekseerimine lihtne. Alustamiseks valige andmebaas, mis juba sisaldab kogusid.
Ütle, et meie andmebaasi nimi on MUO:
kasuta MUO-d
Kui olete andmebaasi valinud, kasutage createIndex() käsu kestas ühe indeksi loomiseks.
Näiteks kogus ühe kasutajanime indeksi loomiseks ja selle kasutamiseks vastupidises järjekorras päringute tegemiseks:
db.collectionName.createIndex({kasutajanimi: -1})
Mitme võtmega indekseerimine MongoDB-s
Mitme võtmega indeksid on kasulikud keeruka andmemassiivi välja indekseerimiseks. Näiteks võib kogu sisaldada kasutajate keerulisi andmeid ja nende teavet teises massiivis. Näiteks öelge nimi, pikkus ja vanus.
Saate luua mitme võtmega indeksi iga selle massiivi kasutaja pikkuse kohta järgmiselt:
db.customers.createIndex({kasutaja.kõrgus: 1})
The kõrgus ülaltoodud koodis on alamhulk kasutaja valdkonnas.
Looge liitindeks
Liitindeks sisaldab rohkem kui ühte indeksit. Aadressi ja tootetüübi liitindeksi loomiseks kliendikogus toimige näiteks järgmiselt.
db.customer.createIndex({aadress: 1, tooted: 1})
Kuna te ei andnud ülaltoodud indeksi loomisel nime, loob MongoDB selle vaikimisi. Kuid see eraldab iga indeksi nime alljoonega. Seega on see vähem loetav, eriti kui teil on ühendis rohkem kui kaks indeksit.
Nime määramiseks liitindeksi loomisel tehke järgmist.
db.customers.createIndex({asukoht: 1, tooted: 1, kaal: -1}, {nimi: "myCompundIndex"})
Hankige kõik kollektsiooni indeksid
Kogu kõigi indeksite vaatamiseks toimige järgmiselt.
db.collectionName.getIndexes()
Ülaltoodud kood väljastab kõik nimega kogus olevad indeksid.
Korraldage oma andmebaasi indeksite abil
Indekseerimine MongoDB-s vähendab samaaegsete päringute täitmisel käitusaja latentsust. Lisaks aitavad need teil andmebaasi korrastada ja muuta see juurdepääsetavamaks. Nagu olete näinud, pole MongoDB-s indeksite loomine lõppude lõpuks keeruline. Siin toodud näidetest piisab, et saaksite indeksi loomisega alustada. Sellegipoolest peate oma indeksite praktikas nägemiseks teadma, kuidas päring MongoDB-s töötab.
MongoDB tundmaõppimine on keeruline. Lööge CRUD-iga maapinnale.
Loe edasi
- Programmeerimine
- Python
- Programmeerimine
- andmebaasi
Idowu on kirglik kõige nutika tehnoloogia ja tootlikkuse vastu. Vabal ajal mängib ta ringi kodeerimisega ja lülitub igavlemisel malelauale, kuid armastab ka aeg-ajalt rutiinist lahti murda. Tema kirg näidata inimestele teed kaasaegses tehnikas motiveerib teda rohkem kirjutama.
Liituge meie uudiskirjaga
Liituge meie uudiskirjaga tehniliste näpunäidete, arvustuste, tasuta e-raamatute ja eksklusiivsete pakkumiste saamiseks!
Tellimiseks klõpsake siin