MongoDB Tutorial de indexación: ejemplo de createIndex(), dropindex()
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 tenía una colección con miles de documentos sin índices y luego consulta para encontrar ciertos documentos, entonces en tal caso MongoDB Necesitaría escanear toda la colección para encontrar los documentos. Pero si tuvieras índices, MongoDB utilizaría estos índices para limitar el número de documentos que debían buscarse 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 leerlos. Este conjunto parcial almacena el valor de un campo específico o un conjunto de campos ordenados por el valor del campo.
Comprender el impacto de los índices
Si bien en la introducción hemos visto que los índices son buenos para las consultas, tener demasiados índices puede ralentizar otras operaciones, como las operaciones Insertar, Eliminar y Actualizar.
Si se realizan operaciones frecuentes de inserción, eliminación y actualización de documentos, entonces los índices tendrían que cambiar con tanta frecuencia, lo que sería simplemente 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 en varios campos de la colección.
En el siguiente ejemplo, el ID de empleado “1” y el Código de empleado “AA” se utilizan para indexar los documentos de la colección. Entonces, cuando se realiza una búsqueda, estos índices se utilizarán para encontrar rápida y eficientemente los documentos requeridos en la colección.
Entonces, incluso si la consulta de búsqueda se basa en el código de empleado "AA", se devolverá ese documento.
Cómo crear índices: createIndex()
Crear un índice en MongoDB se realiza utilizando el “crearíndice"Método.
El siguiente ejemplo muestra cómo agregar un índice a una colección. Supongamos que tenemos la misma colección Employee que tiene los nombres de campo “Employeeid” y “EmployeeName”.
db.Employee.createIndex({Employeeid:1})
Explicación del código:
- El sistema crearíndice El método 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 se crea automáticamente en la colección por MongoDB. Los documentos ahora se ordenarán según el campo Employeeid y no según el _id.
Si el comando se ejecuta correctamente, se mostrará la siguiente salida:
Salida:
- numIndexesBefore: 1 indica el número de valores de campo (los campos reales de la colección) que estaban en los índices antes de ejecutar 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 ejecutar el comando.
- Aquí, el resultado "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 múltiples valores de campo, lo que ahora hará que el índice se cree en función de "Employeeid" y "EmployeeName". Employeeid:1 y EmployeeName:1 indican que el índice debe crearse en estos 2 valores de campo y :1 indica que debe estar en orden ascendente.
Cómo encontrar índices: getindexes()
Encontrar un índice en MongoDB se realiza utilizando el “obtener índices” método.
El siguiente ejemplo muestra cómo se puede hacer esto;
db.Employee.getIndexes()
Explicación del código:
- El método getIndexes se utiliza para encontrar todos los índices de una colección.
Si el comando se ejecuta correctamente, se mostrará la siguiente salida:
Salida:
- El resultado devuelve un documento que simplemente 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 eliminar índices: dropindex()
Eliminar un índice en MongoDB se realiza utilizando 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 correctamente, se mostrará la siguiente salida:
Salida:
- nIndexesWas: 3 indica el número de valores de campo que estaban en los índices antes de ejecutar el comando. Recuerde que cada colección tiene el campo _id que también cuenta como un valor de campo para el índice.
- El resultado ok: 1 especifica que la operación fue exitosa 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 correctamente, se mostrará la siguiente salida:
Salida:
- nIndexesWas: 2 indica el número de valores de campo que estaban en los índices antes de ejecutar 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.
- El resultado ok: 1 especifica que la operación fue exitosa.
Resumen
- La definición de índices es importante para realizar búsquedas más rápidas y eficientes 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 únicos o dropIndexes para eliminar todos los índices.