MongoDB Индексиране: createIndex() и dropIndex()
⚡ Умно обобщение
MongoDB Индексите съхраняват подредено подмножество от полета на колекция, така че заявките могат да намират документи, без да сканират всеки запис. Методите createIndex, getIndexes и dropIndex изграждат, изброяват и премахват тези критични за производителността структури.

Какви са MongoDB Индекси?
Индексите са много важни във всяка база данни и с MongoDB Не е по-различно. С използването на индекси, извършването на заявки в MongoDB става по-ефективен.
Ако имате колекция с хиляди документи без индекси и след това заявите да намерите определени документи, тогава в такъв случай MongoDB ще трябва да сканира цялата колекция, за да намери документите. Но ако имахте индекси, MongoDB ще използва тези индекси, за да ограничи броя на документите, които трябва да бъдат търсени в колекцията.
Индексите са специални набори от данни, които съхраняват част от данните на колекцията. Тъй като данните са частични, те стават по-лесни за четене. Този частичен набор съхранява стойността на конкретно поле или набор от полета, подредени по стойността на полето.
Разбиране на въздействието на индексите
Въпреки че въведението показа, че индексите са добри за заявки, наличието на твърде много индекси може да забави други операции, като например операциите за вмъкване, изтриване и актуализиране.
Ако се извършват чести операции по вмъкване, изтриване и актуализиране на документи, тогава индексите ще трябва да се променят толкова често, което би било просто допълнително натоварване за колекцията.
Примерът по-долу показва какви стойности на полетата могат да съставляват индекс в колекция. Индексът може да се основава или само на едно поле в колекцията, или на множество полета в колекцията.
В примера по-долу, Employeeid „1“ и EmployeeCode „AA“ се използват за индексиране на документите в колекцията. Така че, когато се извършва търсене по заявка, тези индекси ще бъдат използвани за бързо и ефикасно намиране на необходимите документи в колекцията.
Така че, дори ако заявката за търсене е базирана на служителяCode „АА“, този документ ще бъде върнат.
Как да създадете индекси: createIndex()
Създаване на индекс в MongoDB се извършва с помощта на createIndex метод.
Следният пример показва как да добавим индекс към колекция. Да предположим, че имаме същата колекция Employee, която има имената на полетата „Employeeid“ и „EmployeeName“.
db.Employee.createIndex({Employeeid:1})
Code Обяснение:
- - createIndex се използва за създаване на индекс въз основа на „Employeeid“ на документа.
- Параметърът „1“ показва, че когато индексът е създаден със стойностите на полето „Employeeid“, те трябва да бъдат сортирани във възходящ ред. Моля, обърнете внимание, че това е различно от полето _id (което уникално идентифицира всеки документ), което MongoDB създава автоматично. Документите вече ще бъдат сортирани според полето Employeeid, а не според полето _id.
Ако командата е изпълнена успешно, ще се покаже следният изход:
Изход:
- Стойността numIndexesBefore: 1 показва броя на стойностите на полетата в индексите преди изпълнението на командата. Всяка колекция има полето _id, което също се брои като стойност на поле, така че numIndexesBefore е 1.
- Стойността numIndexesAfter: 2 показва броя на стойностите на полетата в индексите след изпълнението на командата.
- Изходът „ok: 1“ показва, че операцията е била успешна и новият индекс е добавен към колекцията.
Горният код показва как да се създаде индекс, базиран на стойност на едно поле, но може да се създаде индекс и въз основа на стойности на множество полета. Следният пример показва как може да се направи това:
db.Employee.createIndex({Employeeid:1, EmployeeName:1})
Методът createIndex вече взема предвид множество стойности на полета, което ще доведе до създаването на индекс въз основа на „Employeeid“ и „EmployeeName“. Employeeid:1 и EmployeeName:1 показват, че индексът трябва да бъде създаден въз основа на тези две стойности на полета, като :1 показва възходящ ред. Това е известно като съставен индекс.
Как да намерим индекси: getIndexes()
Намиране на индекс в MongoDB се извършва с помощта на getIndexes метод. Следният пример показва как може да се направи това:
db.Employee.getIndexes()
Методът getIndexes се използва за намиране на всички индекси в колекция.
Ако командата е изпълнена успешно, ще се покаже следният изход:
Изход:
Резултатът връща документ, който показва, че в колекцията има два индекса: полето _id и полето Employeeid. :1 показва, че стойностите на полетата в индекса са създадени във възходящ ред.
Как да премахнем индекси: dropIndex()
Премахване на индекс в MongoDB се извършва с помощта на dropIndex метод. Следният пример показва как може да се направи това:
db.Employee.dropIndex({Employeeid:1})
Методът dropIndex приема задължителните стойности на полетата, които трябва да бъдат премахнати от индекса.
Ако командата е изпълнена успешно, ще се покаже следният изход:
Изход:
- nIndexesWas: 3 показва броя на стойностите на полетата в индексите преди изпълнението на командата. Всяка колекция има полето _id, което също се брои за стойност на поле.
- Изходът ok: 1 указва, че операцията е била успешна и полето „Employeeid“ се премахва от индекса.
За да премахнете всички индекси наведнъж в колекцията, може да се използва командата dropIndexes. Следният пример показва как може да се направи това:
db.Employee.dropIndexes()
Методът dropIndexes ще премахне всички индекси с изключение на индекса _id.
Ако командата е изпълнена успешно, ще се покаже следният изход:
Изход:
- nIndexesWas: 2 показва броя на стойностите на полетата в индексите преди изпълнението на командата.
- Всяка колекция има полето _id, което също се брои като стойност на полето и няма да бъде премахнато от MongoDB; това показва това съобщение.
- Изходът ok: 1 указва, че операцията е била успешна.










