Индекси су веома важни у било којој бази података, а са МонгоДБ се не разликује. Коришћењем индекса извршавање упита у МонгоДБ постаје ефикасније.
Ако сте имали колекцију са хиљадама докумената без индекса, а затим тражите да пронађете одређене документе, тада би у том случају МонгоДБ морао да скенира целу колекцију да би пронашао документе. Али да имате индексе, МонгоДБ би их користио да ограничи број докумената који се морају претраживати у колекцији.
Индекси су посебни скупови података који чувају делимични део података колекције. Пошто су подаци делимични, постаје лакше читати их. Овај делимични скуп чува вредност одређеног поља или скуп поља пореданих према вредности поља.
У овом упутству ћете научити -
- Разумевање утицаја индекса
- Како направити индексе: цреатеИндек ()
- Како пронаћи индексе: гетиндекес ()
- Како испустити индексе: дропиндек ()
Разумевање утицаја индекса
Сада, иако смо из увода видјели да су индекси добри за упите, али превише индекса може успорити друге операције као што су уметање, брисање и ажурирање.
Ако се на документима често извршавају поступци уметања, брисања и ажурирања, индекси би то морали често да мењају, што би само представљало режијске трошкове за колекцију.
Пример у наставку приказује пример тога које вредности поља могу чинити индекс у збирци. Индекс се може заснивати на само једном пољу у збирци или на више поља у збирци.
У доњем примеру, Емплоиееид "1" и ЕмплоиееЦоде "АА" користе се за индексирање докумената у колекцији. Дакле, када се изврши претрага упита, ови индекси ће се користити за брзо и ефикасно проналажење потребних докумената у збирци.
Дакле, чак и ако се упит за претрагу заснива на ЕмплоиееЦоде "АА", тај документ би био враћен.
Како направити индексе: цреатеИндек ()
Креирање индекса у МонгоДБ-у врши се методом " цреатеИндек ".
Следећи пример показује како додати индекс у колекцију. Претпоставимо да имамо исту колекцију запослених која има називе поља „Емплоиееид“ и „ЕмплоиееНаме“.
db.Employee.createIndex({Employeeid:1})
Објашњење кода:
- ЦреатеИндек метода се користи за креирање индекса на основу "Емплоиееид" документа.
- Параметар '1' указује на то да када се индекс креира са вредностима поља "Емплоиееид", оне треба да се сортирају у растућем редоследу. Имајте на уму да се ово разликује од поља _ид (поље ид се користи за јединствену идентификацију сваког документа у колекцији) које МонгоДБ аутоматски креира у колекцији. Документи ће сада бити сортирани према пољу Емплоиееид, а не по _иду.
Ако се наредба изврши успешно, приказаће се следећи излаз:
Излаз:
- НумИндекесБефоре: 1 означава број вредности поља (стварна поља у колекцији) које су биле у индексима пре покретања наредбе. Имајте на уму да свака колекција има поље _ид које се у индекс такође рачуна као вредност поља. Будући да је поље индекса _ид део колекције када је иницијално креирано, вредност нумИндекесБефоре је 1.
- НумИндекесАфтер: 2 означава број вредности поља које су се налазиле у индексима након покретања наредбе.
- Овде излаз „ок: 1“ наводи да је операција била успешна, а нови индекс се додаје у колекцију.
Горњи код показује како се креира индекс на основу једне вредности поља, али се такође може креирати индекс на основу више вредности поља.
Следећи пример показује како се то може учинити;
db.Employee.createIndex({Employeeid:1, EmployeeName:1])
Објашњење кода:
- Метода цреатеИндек сада узима у обзир вишеструке вредности поља због којих ће индекс сада бити креиран на основу „Емплоиееид“ и „ЕмплоиееНаме“. Емплоиееид: 1 и ЕмплоиееНаме: 1 указују на то да индекс треба да се креира на ове две вредности поља са: 1 што значи да би требало да буде у растућем редоследу.
Како пронаћи индексе: гетиндекес ()
Проналажење индекса у МонгоДБ се врши помоћу методе „гетИндекес“ .
Следећи пример показује како се то може учинити;
db.Employee.getIndexes()
Објашњење кода:
- Метода гетИндекес користи се за проналажење свих индекса у колекцији.
Ако се наредба изврши успешно, приказаће се следећи излаз:
Излаз:
- Излаз враћа документ који само показује да у колекцији постоје 2 индекса, а то је поље _ид, а друго је поље ид запосленика. Ознака: 1 означава да су вредности поља у индексу креиране у растућем редоследу.
Како испустити индексе: дропиндек ()
Уклањање индекса у МонгоДБ врши се методом дропИндек.
Следећи пример показује како се то може учинити;
db.Employee.dropIndex(Employeeid:1)
Објашњење кода:
- Метода дропИндек узима потребне вредности поља које треба уклонити из индекса.
Ако се наредба изврши успешно, приказаће се следећи излаз:
Излаз:
- НИндекесВас: 3 означава број вредности поља које су биле у индексима пре покретања наредбе. Имајте на уму да свака колекција има поље _ид које се у индекс такође рачуна као вредност поља.
- Излаз ок: 1 наводи да је операција била успешна, а поље „Емплоиееид“ је уклоњено из индекса.
Да бисте уклонили све индексе одједном у колекцији, можете користити наредбу дропИндекес.
Следећи пример показује како се то може учинити.
db.Employee.dropIndex()
Објашњење кода:
- Метода дропИндекес ће испустити све индексе, осим индекса _ид.
Ако се наредба изврши успешно, приказаће се следећи излаз:
Излаз:
- НИндекесВас: 2 означава број вредности поља које су биле у индексима пре покретања наредбе.
- Запамтите поново да свака колекција има поље _ид које се такође рачуна као вредност поља у индекс, а МонгоДБ га неће уклонити и на то указује ова порука.
- Излаз ок: 1 наводи да је операција била успешна.
Резиме
- Дефинисање индекса је важно за брже и ефикасније претраживање докумената у збирци.
- Индекси се могу креирати методом цреатеИндек. Индекси се могу креирати на само једном пољу или на више вредности поља.
- Индекси се могу наћи помоћу методе гетИндекес.
- Индекси се могу уклонити помоћу дропИндек за појединачне индексе или дропИндек за испуштање свих индекса.