MongoDB Инструкция за индексиране – createIndex(), dropindex() Пример

Индексите са много важни във всяка база данни и с MongoDB не е по-различно. С използването на индекси, извършване на заявки в MongoDB става по-ефективен.

Ако сте имали колекция с хиляди документи без индекси и след това търсите определени документи, тогава в такъв случай MongoDB ще трябва да сканира цялата колекция, за да намери документите. Но ако имахте индекси, MongoDB ще използва тези индекси, за да ограничи броя на документите, които трябва да бъдат търсени в колекцията.

Индексите са специални набори от данни, които съхраняват част от данните на колекцията. Тъй като данните са частични, четенето на тези данни става по-лесно. Този частичен набор съхранява стойността на конкретно поле или набор от полета, подредени по стойността на полето.

Разбиране на въздействието на индексите

Сега, въпреки че от въведението видяхме, че индексите са добри за заявки, но наличието на твърде много индекси може да забави други операции като операциите за вмъкване, изтриване и актуализиране.

Ако има чести операции за вмъкване, изтриване и актуализиране на документи, тогава индексите ще трябва да се променят толкова често, което просто би било излишно за колекцията.

Примерът по-долу показва пример за това какви стойности на полета могат да съставляват индекс в колекция. Индексът може да се базира само на едно поле в колекцията или може да се основава на множество полета в колекцията.

В примера по-долу Employeeid „1“ и EmployeeCode „AA“ се използват за индексиране на документите в колекцията. Така че, когато се направи търсене по заявка, тези индекси ще се използват за бързо и ефективно намиране на необходимите документи в колекцията.

Така че дори ако заявката за търсене е базирана на EmployeeCode „AA“, този документ ще бъде върнат.

Разбиране на въздействието на индексите

Как да създадете индекси: createIndex()

Създаване на индекс в MongoDB се извършва с помощта на „createIndex”Метод.

Следващият пример показва как се добавя индекс към колекция. Да приемем, че имаме една и съща колекция Employee, която има имена на полета „Employeeid“ и „EmployeeName“.

Създаване на индекси: createIndex()

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

Обяснение на кода:

  1. - createIndex се използва за създаване на индекс въз основа на „Employeeid“ на документа.
  2. Параметърът „1“ показва, че когато индексът е създаден със стойностите на полето „Employeeid“, те трябва да бъдат сортирани във възходящ ред. Моля, имайте предвид, че това е различно от полето _id (Полето id се използва за уникално идентифициране на всеки документ в колекцията), което се създава автоматично в колекцията от MongoDB. Документите вече ще бъдат сортирани по Employeeid, а не по полето _id.

Ако командата е изпълнена успешно, ще се покаже следният изход:

Изход:

Създаване на индекси: createIndex()

  1. numIndexesBefore: 1 показва броя на стойностите на полето (действителните полета в колекцията), които са били там в индексите преди изпълнението на командата. Не забравяйте, че всяка колекция има поле _id, което също се брои като стойност на поле към индекса. Тъй като индексното поле _id е част от колекцията, когато е създадено първоначално, стойността на numIndexesBefore е 1.
  2. numIndexesAfter: 2 показва броя на стойностите на полето, които са били там в индексите след изпълнение на командата.
  3. Тук изходът „ok: 1“ указва, че операцията е била успешна и новият индекс се добавя към колекцията.

Горният код показва как да създадете индекс въз основа на една стойност на поле, но можете също да създадете индекс въз основа на множество стойности на поле.

Следващият пример показва как може да се направи това;

Създаване на индекси: createIndex()

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

Обяснение на кода:

  • Методът createIndex вече взема предвид множество стойности на полето, което сега ще доведе до създаване на индекс въз основа на „Employeeid“ и „EmployeeName“. Employeeid:1 и EmployeeName:1 указва, че индексът трябва да бъде създаден на тези 2 стойности на полето с :1, което показва, че трябва да бъде във възходящ ред.

Как да намерите индекси: getindexes()

Намиране на индекс в MongoDB се извършва с помощта на „getIndexes“ метод.

Следващият пример показва как може да се направи това;

Намиране на индекси: getindexes()

db.Employee.getIndexes()

Обяснение на кода:

  • Методът getIndexes се използва за намиране на всички индекси в колекция.

Ако командата е изпълнена успешно, ще се покаже следният изход:

Изход:

Намиране на индекси: getindexes()

  • Изходът връща документ, който просто показва, че има 2 индекса в колекцията, което е полето _id, а другото е полето за идентификатор на служител. :1 показва, че стойностите на полетата в индекса са създадени във възходящ ред.

Как да премахнете индексите: dropindex()

Премахване на индекс в MongoDB се извършва с помощта на метода dropIndex.

Следващият пример показва как може да се направи това;

Пускане на индекси: dropindex()

db.Employee.dropIndex(Employeeid:1)

Обяснение на кода:

  • Методът dropIndex взема необходимите стойности на полето, които трябва да бъдат премахнати от индекса.

Ако командата е изпълнена успешно, ще се покаже следният изход:

Изход:

Пускане на индекси: dropindex()

  1. nIndexesWas: 3 показва броя на стойностите на полетата, които са били там в индексите преди изпълнението на командата. Не забравяйте, че всяка колекция има поле _id, което също се брои като стойност на поле към индекса.
  2. Изходът ok: 1 указва, че операцията е била успешна и полето „Employeeid“ се премахва от индекса.

За да премахнете всички индекси наведнъж в колекцията, можете да използвате командата dropIndexes.

Следващият пример показва как може да се направи това.

Пускане на индекси: dropindex()

db.Employee.dropIndex()

Обяснение на кода:

  • Методът dropIndexes ще премахне всички индекси с изключение на индекса _id.

Ако командата е изпълнена успешно, ще се покаже следният изход:

Изход:

Пускане на индекси: dropindex()

  1. nIndexesWas: 2 показва броя на стойностите на полетата, които са били там в индексите преди изпълнението на командата.
  2. Не забравяйте отново, че всяка колекция има полето _id, което също се брои като стойност на поле към индекса и това няма да бъде премахнато от MongoDB и това показва това съобщение.
  3. Изходът ok: 1 указва, че операцията е била успешна.

Oбобщение

  • Дефинирането на индекси е важно за по-бързо и ефективно търсене на документи в колекция.
  • Индексите могат да бъдат създадени с помощта на метода createIndex. Индексите могат да бъдат създадени само върху едно поле или множество стойности на полета.
  • Индексите могат да бъдат намерени с помощта на метода getIndexes.
  • Индексите могат да бъдат премахнати чрез използване на dropIndex за единични индекси или dropIndexes за премахване на всички индекси.