MongoDB-indeksoinnin opetusohjelma - createIndex (), dropindex () -esimerkki

Sisällysluettelo:

Anonim

Hakemistot ovat erittäin tärkeitä missä tahansa tietokannassa, ja MongoDB: n kanssa se ei ole eroa. Hakemistojen avulla kyselyjen suorittaminen MongoDB: ssä tehostuu.

Jos sinulla olisi kokoelma, jossa on tuhansia asiakirjoja ilman hakemistoja, ja sitten kysyt tiettyjen asiakirjojen löytämistä, niin tällöin MongoDB: n olisi skannattava koko kokoelma löytääkseen asiakirjat. Mutta jos sinulla olisi hakemistoja, MongoDB käyttäisi näitä hakemistoja rajoittamaan kokoelmasta haettavien asiakirjojen määrää.

Hakemistot ovat erityisiä tietojoukkoja, jotka tallentavat osan kokoelman tiedoista. Koska tiedot ovat osittaisia, näiden tietojen lukeminen on helpompaa. Tämä osajoukko tallentaa tietyn kentän tai kenttäjoukon arvon järjestyksessä kentän arvon mukaan.

Tässä opetusohjelmassa opit -

  • Indeksien vaikutuksen ymmärtäminen
  • Hakemistojen luominen: createIndex ()
  • Hakemistojen etsiminen: getindexes ()
  • Hakemistojen pudottaminen: dropindex ()

Indeksien vaikutuksen ymmärtäminen

Vaikka johdannosta olemme nähneet, että hakemistot ovat hyviä kyselyille, mutta liian monta hakemistoa voi hidastaa muita toimintoja, kuten Lisää, Poista ja Päivitä.

Jos asiakirjoille tehdään usein lisäys-, poisto- ja päivitystoimintoja, hakemistoja on muutettava niin usein, mikä olisi vain kokoelman yleiskustannuksia.

Seuraava esimerkki näyttää esimerkin siitä, mitkä kenttäarvot voivat muodostaa kokoelman indeksin. Indeksi voi joko perustua vain yhteen kokoelman kenttään tai se voi perustua useisiin kokoelman kenttiin.

Alla olevassa esimerkissä Employeeid "1" ja EmployeeCode "AA" käytetään kokoelman asiakirjojen indeksointiin. Joten kun kyselyhaku tehdään, näitä hakemistoja käytetään tarvittavien asiakirjojen löytämiseen kokoelmasta nopeasti ja tehokkaasti.

Joten vaikka hakukysely perustuisi EmployeeCode "AA: han", kyseinen asiakirja palautettaisiin.

Hakemistojen luominen: createIndex ()

Hakemiston luominen MongoDB: ssä tapahtuu " createIndex " -menetelmällä.

Seuraava esimerkki osoittaa, kuinka hakemisto lisätään kokoelmaan. Oletetaan, että meillä on sama Employee-kokoelmamme, jolla on kenttien nimet "Employeeid" ja "EmployeeName".

db.Employee.createIndex({Employeeid:1})

Koodin selitys:

  1. CreateIndex menetelmää käytetään luoda indeksi perustuu "TyöntekijänTunnus" asiakirjan.
  2. Parametri '1' osoittaa, että kun hakemisto luodaan kentän "Työntekijät" arvoilla, ne tulisi lajitella nousevassa järjestyksessä. Huomaa, että tämä eroaa _id-kentästä (ID-kenttää käytetään yksilöimään kokoelman kaikki asiakirjat), jonka MongoDB luo automaattisesti kokoelmaan. Asiakirjat lajitellaan nyt Employeeid-kentän eikä _id-kentän mukaan.

Jos komento suoritetaan onnistuneesti, seuraava lähtö näytetään:

Tuotos:

  1. NumIndexesBefore: 1 ilmaisee niiden kenttien arvojen määrän (kokoelman todelliset kentät), jotka olivat hakemistoissa ennen komennon suorittamista. Muista, että jokaisella kokoelmalla on kenttä _id, joka lasketaan myös kentän arvoksi hakemistoon. Koska _id-indeksikenttä on osa kokoelmaa, kun se alun perin luodaan, numIndexesBefore-arvon arvo on 1.
  2. NumIndexesAfter: 2 ilmaisee kentissä olevien arvojen määrän, jotka olivat hakemistoissa komennon suorittamisen jälkeen.
  3. Tässä "ok: 1" -lähtö määrittää, että operaatio onnistui, ja uusi indeksi lisätään kokoelmaan.

Yllä oleva koodi osoittaa, kuinka luodaan hakemisto yhden kenttäarvon perusteella, mutta voidaan myös luoda indeksi useiden kenttien arvojen perusteella.

Seuraava esimerkki osoittaa, kuinka tämä voidaan tehdä;

db.Employee.createIndex({Employeeid:1, EmployeeName:1])

Koodin selitys:

  1. CreateIndex-menetelmä ottaa nyt huomioon useita kenttäarvoja, jotka nyt aiheuttavat hakemiston luomisen "Employeeid" ja "EmployeeName" perusteella. Employeeid: 1 ja EmployeeName: 1 osoittavat, että hakemisto on luotava näihin kahteen kenttäarvoon seuraavalla tavalla: 1 osoittaa, että sen pitäisi olla nousevassa järjestyksessä.

Hakemistojen etsiminen: getindexes ()

Hakemiston etsiminen MongoDB: stä tapahtuu "getIndexes" -menetelmällä.

Seuraava esimerkki osoittaa, kuinka tämä voidaan tehdä;

db.Employee.getIndexes()

Koodin selitys:

  1. GetIndexes-menetelmää käytetään kaikkien indeksin löytämiseen kokoelmasta.

Jos komento suoritetaan onnistuneesti, seuraava lähtö näytetään:

Tuotos:

  1. Lähtö palauttaa asiakirjan, joka vain osoittaa, että kokoelmassa on 2 hakemistoa, joka on kenttä _id, ja toinen on Työntekijän tunnus -kenttä. : 1 tarkoittaa, että hakemiston kenttäarvot luodaan nousevassa järjestyksessä.

Hakemistojen pudottaminen: dropindex ()

Hakemiston poistaminen MongoDB: ssä tapahtuu dropIndex-menetelmällä.

Seuraava esimerkki osoittaa, kuinka tämä voidaan tehdä;

db.Employee.dropIndex(Employeeid:1)

Koodin selitys:

  1. DropIndex-menetelmä ottaa vaaditut kenttäarvot, jotka on poistettava hakemistosta.

Jos komento suoritetaan onnistuneesti, seuraava lähtö näytetään:

Tuotos:

  1. NIndexesWas: 3 ilmaisee niiden kenttäarvojen lukumäärän, jotka olivat hakemistoissa ennen komennon suorittamista. Muista, että jokaisella kokoelmalla on kenttä _id, joka lasketaan myös kentän arvoksi hakemistoon.
  2. Ok: 1-lähtö määrittelee, että operaatio onnistui, ja "Employeeid" -kenttä poistetaan hakemistosta.

Voit poistaa kaikki indeksit kerralla kerralla käyttämällä dropIndexes-komentoa.

Seuraava esimerkki osoittaa, miten tämä voidaan tehdä.

db.Employee.dropIndex()

Koodin selitys:

  1. DropIndexes-menetelmä pudottaa kaikki indeksit _id-indeksiä lukuun ottamatta.

Jos komento suoritetaan onnistuneesti, seuraava lähtö näytetään:

Tuotos:

  1. NIndexesWas: 2 ilmaisee niiden kenttäarvojen lukumäärän, jotka olivat hakemistoissa ennen komennon suorittamista.
  2. Muista vielä, että jokaisella kokoelmalla on _id-kenttä, joka lasketaan myös hakemiston Kentän arvoksi, eikä MongoDB poista sitä, ja tämä on tämä viesti.
  3. Ok: 1-lähtö määrittää, että operaatio onnistui.

Yhteenveto

  • Hakemistojen määrittely on tärkeää kokoelman asiakirjojen nopeammalle ja tehokkaammalle etsimiselle.
  • Hakemistoja voidaan luoda käyttämällä createIndex-menetelmää. Hakemistot voidaan luoda vain yhdelle kentälle tai usealle kenttäarvolle.
  • Hakemistot löytyvät getIndexes-menetelmällä.
  • Hakemistot voidaan poistaa käyttämällä dropIndex yksittäisiä hakemistoja tai dropIndexes pudottamalla kaikki indeksit.