Los índices son muy importantes en cualquier base de datos, y con MongoDB no es diferente. Con el uso de índices, realizar consultas en MongoDB se vuelve más eficiente.
Si tuvieras una colección con miles de documentos sin índices y luego consultas para encontrar ciertos documentos, entonces, en tal caso, MongoDB necesitaría escanear toda la colección para encontrar los documentos. Pero si tuviera índices, MongoDB usaría estos índices para limitar la cantidad de documentos que se deben buscar en la colección.
Los índices son conjuntos de datos especiales que almacenan una parte parcial de los datos de la colección. Dado que los datos son parciales, resulta más fácil leer estos datos. Este conjunto parcial almacena el valor de un campo específico o un conjunto de campos ordenados por el valor del campo.
En este tutorial, aprenderá:
- Comprender el impacto de los índices
- Cómo crear índices: createIndex ()
- Cómo encontrar índices: getindexes ()
- Cómo soltar índices: dropindex ()
Comprender el impacto de los índices
Ahora bien, a pesar de que desde la introducción hemos visto que los índices son buenos para las consultas, tener demasiados índices puede ralentizar otras operaciones como la operación Insertar, Eliminar y Actualizar.
Si se llevan a cabo operaciones frecuentes de inserción, eliminación y actualización en documentos, entonces los índices tendrían que cambiar con tanta frecuencia, lo que sería una sobrecarga para la colección.
El siguiente ejemplo muestra un ejemplo de qué valores de campo podrían constituir un índice en una colección. Un índice puede basarse en un solo campo de la colección o puede basarse en varios campos de la colección.
En el siguiente ejemplo, el Employeeid "1" y el EmployeeCode "AA" se utilizan para indexar los documentos de la colección. Entonces, cuando se realiza una búsqueda de consulta, estos índices se utilizarán para encontrar de manera rápida y eficiente los documentos requeridos en la colección.
Entonces, incluso si la consulta de búsqueda se basa en el EmployeeCode "AA", ese documento se devolverá.
Cómo crear índices: createIndex ()
La creación de un índice en MongoDB se realiza mediante el método " createIndex ".
El siguiente ejemplo muestra cómo agregar índice a la colección. Supongamos que tenemos nuestra misma colección de empleados que tiene los nombres de campo de "Employeeid" y "EmployeeName".
db.Employee.createIndex({Employeeid:1})
Explicación del código:
- El método createIndex se utiliza para crear un índice basado en el "Employeeid" del documento.
- El parámetro '1' indica que cuando el índice se crea con los valores del campo "Employeeid", deben ordenarse en orden ascendente. Tenga en cuenta que esto es diferente del campo _id (el campo id se utiliza para identificar de forma única cada documento de la colección) que MongoDB crea automáticamente en la colección. Los documentos ahora se ordenarán según el Employeeid y no el campo _id.
Si el comando se ejecuta con éxito, se mostrará la siguiente salida:
Producción:
- NumIndexesBefore: 1 indica el número de valores de campo (los campos reales de la colección) que estaban en los índices antes de que se ejecutara el comando. Recuerde que cada colección tiene el campo _id que también cuenta como un valor de campo para el índice. Dado que el campo de índice _id es parte de la colección cuando se crea inicialmente, el valor de numIndexesBefore es 1.
- NumIndexesAfter: 2 indica el número de valores de campo que estaban en los índices después de que se ejecutó el comando.
- Aquí, la salida "ok: 1" especifica que la operación fue exitosa y el nuevo índice se agrega a la colección.
El código anterior muestra cómo crear un índice basado en un valor de campo, pero también se puede crear un índice basado en múltiples valores de campo.
El siguiente ejemplo muestra cómo se puede hacer esto;
db.Employee.createIndex({Employeeid:1, EmployeeName:1])
Explicación del código:
- El método createIndex ahora tiene en cuenta varios valores de campo que ahora harán que el índice se cree basado en "Employeeid" y "EmployeeName". Employeeid: 1 y EmployeeName: 1 indican que el índice debe crearse en estos 2 valores de campo con: 1 indicando que debe estar en orden ascendente.
Cómo encontrar índices: getindexes ()
La búsqueda de un índice en MongoDB se realiza mediante el método "getIndexes" .
El siguiente ejemplo muestra cómo se puede hacer esto;
db.Employee.getIndexes()
Explicación del código:
- El método getIndexes se usa para encontrar todos los índices de una colección.
Si el comando se ejecuta con éxito, se mostrará la siguiente salida:
Producción:
- La salida devuelve un documento que solo muestra que hay 2 índices en la colección, que es el campo _id, y el otro es el campo Id. De empleado. El: 1 indica que los valores de campo en el índice se crean en orden ascendente.
Cómo soltar índices: dropindex ()
La eliminación de un índice en MongoDB se realiza mediante el método dropIndex.
El siguiente ejemplo muestra cómo se puede hacer esto;
db.Employee.dropIndex(Employeeid:1)
Explicación del código:
- El método dropIndex toma los valores de campo requeridos que deben eliminarse del índice.
Si el comando se ejecuta con éxito, se mostrará la siguiente salida:
Producción:
- NIndexesWas: 3 indica el número de valores de campo que estaban en los índices antes de que se ejecutara el comando. Recuerde que cada colección tiene el campo _id que también cuenta como un valor de campo para el índice.
- La salida ok: 1 especifica que la operación se realizó correctamente y el campo "Employeeid" se elimina del índice.
Para eliminar todos los índices a la vez en la colección, se puede usar el comando dropIndexes.
El siguiente ejemplo muestra cómo se puede hacer esto.
db.Employee.dropIndex()
Explicación del código:
- El método dropIndexes eliminará todos los índices excepto el índice _id.
Si el comando se ejecuta con éxito, se mostrará la siguiente salida:
Producción:
- NIndexesWas: 2 indica el número de valores de campo que estaban en los índices antes de que se ejecutara el comando.
- Recuerde nuevamente que cada colección tiene el campo _id que también cuenta como un valor de campo para el índice, y que no será eliminado por MongoDB y eso es lo que indica este mensaje.
- La salida ok: 1 especifica que la operación se realizó correctamente.
Resumen
- La definición de índices es importante para una búsqueda más rápida y eficiente de documentos en una colección.
- Los índices se pueden crear utilizando el método createIndex. Los índices se pueden crear en un solo campo o en varios valores de campo.
- Los índices se pueden encontrar utilizando el método getIndexes.
- Los índices se pueden eliminar utilizando dropIndex para índices individuales o dropIndexes para eliminar todos los índices.