Documentación de MongoDB-Uso avanzado-Índice de MongoDB-createindex() y dropindex()-Use expresiones regulares en MongoDB para encontrar

 Adán:

        He estudiado la adición, eliminación, modificación y consulta básicas de MongoDB antes. Definitivamente no es suficiente agregar, borrar, modificar y consultar la base de datos básica de la sociedad. Esta vez se trata de la eficiencia de la búsqueda en la base de datos. Es necesario mejorar la eficiencia de la búsqueda de datos.

Índice MongoDB

        Cuando no hay índice de datos en la base de datos. Si necesitas encontrar algunos datos. Explorará activamente todas las colecciones posibles. Con la introducción del concepto de índice, el índice se puede usar de manera eficiente para limitar el número de documentos que se deben buscar en la colección.

        Concepto de índice:

        Los índices son conjuntos de datos especiales que almacenan una parte de los datos de una colección. Dado que los datos son datos parciales. Así que leer esos datos se vuelve más fácil. Este conjunto parcial almacena el valor de un campo específico o un conjunto de campos ordenados por valor de campo.

Efecto sobre el índice:

  • Cómo crear un índice: createIndex()
  • Cómo encontrar índices: getindexes()
  • Cómo soltar un índice: dropindex()

El impacto de la indexación

        De la introducción anterior, podemos ver que aunque el índice es muy amigable con la base de datos y también muy amigable con la mejora del rendimiento, demasiados índices reducirán otras operaciones. Como insertar, eliminar y otras operaciones de actualización. Por el contrario, la ganancia supera la pérdida.

        Si el documento de extracto realiza borrados frecuentes y otras operaciones de actualización, si estos campos del índice también se ven afectados. Entonces estos índices necesitan ser corregidos y corregidos.

        Es decir, este libro es muy amigable con las consultas, pero si implica la modificación del valor del campo index, se deben modificar las dos etapas de contenido de MongoDB.

        Por lo tanto, en la selección de índices, es necesario seleccionar campos que no se actualicen con frecuencia y campos relativamente importantes como índices.

 

Como se muestra en la figura;

        id y código son campos de datos que no cambian con frecuencia, por lo que estos dos campos se pueden configurar como índices. Para facilitar nuestra búsqueda.

Cómo crear un índice: createIndex()

Crear en MongoDB a través del método de createindex

Primero usé la siguiente declaración para crear una colección ExampleDB y luego almacené 3 documentos en esta colección.

var Example = [
	{
		"_id":2,
		"adncode":1,
		"员工姓名":"帅丹"
	},
	{
		"_id":3,
		"adncode":2,
		"员工姓名":"大力丹"
	},
	{
		"_id":4,
		"adncode":1,
		"员工姓名":"库库丹"
	}
]
db.ExampleDB.insert(Example)

 En el formato de este documento, podemos usar "_id" y "adncode" como índices.

Luego usamos el método createindex para crear un índice

#创建索引
db.ExampleDB.createIndex({adncode:1})

Explicación del código:

       Esta declaración se usa para crear un índice en la base de datos ExampleDB, el nombre del índice es adncode y la columna de índice es la primera columna.

        Específicamente, db.ExampleDB.createIndex({adncode:1}) se crea un índice en la columna adncode en la base de datos denominada ExampleDB, donde adncode es el nombre del índice y 1 indica que la columna es la primera columna. Al crear un índice, puede mejorar la eficiencia de consultar los datos en la columna adncode.

        El parámetro "1" significa que cuando se crea un índice con adncodeun valor de campo " ", debe ordenarse en orden ascendente. Tenga en cuenta que esto es diferente del campo _id (el campo ID se usa para identificar de forma única cada documento en la colección), que MongoDB crea automáticamente en la colección. Los documentos ahora adncodese ordenarán por el campo _id en su lugar.

        Un parámetro de 1 significa clasificación ascendente, mientras que un parámetro de -1 significa clasificación inversa. En MongoDB, la dirección de un índice puede ser unidireccional (1 o -1) o bidireccional ({-1,1} o {1,-1}), lo que indica un sentido de izquierda a derecha o de derecha a -orden izquierdo, respectivamente. Al crear un índice, puede elegir la dirección y las columnas adecuadas para crear el índice de acuerdo con las necesidades reales, a fin de proporcionar un acceso a archivos y un rendimiento de consulta más rápidos. En resumen, la dirección y los parámetros del índice se pueden seleccionar y ajustar según las necesidades específicas para lograr el mejor rendimiento y efecto de consulta.

 Cree una explicación de declaración de devolución exitosa:

  1. numIndexesBefore: 1 indica el número de valores de campo (campos reales en la colección) presentes en el índice antes de ejecutar el comando. Recuerde que cada colección tiene un campo _id que también cuenta como el valor de campo del índice. Dado que el campo de índice _id formaba parte de la colección cuando se creó inicialmente, el valor de numIndexesBefore es 1.
  2. numIndexesAfter: 2 indica la cantidad de valores de campo presentes en el índice después de ejecutar el comando.
  3. El resultado "ok:1" aquí especifica que la operación se realizó correctamente y que el nuevo índice se agregó a la colección.

El código anterior muestra cómo crear un índice basado en un valor de campo, pero también es posible crear un índice basado en varios valores de campo.

 Crear una explicación del parámetro de declaración de índice

db.ExampleDB.createIndex(keys, options)es la declaración utilizada para crear un índice en MongoDB. El keysparámetro especifica la clave para crear el índice, que puede ser un documento clave (como {adncode: 1}) o una matriz que contiene varias claves (como [adncode, code2]). optionsLos parámetros se utilizan para especificar las opciones y el comportamiento del índice, que es un documento que contiene varias opciones.

Aquí hay algunas opciones de uso común y lo que hacen:

  1. background: especifica si el índice se crea en segundo plano, de modo que otras operaciones puedan continuar mientras se crea el índice. De forma predeterminada, los índices se crean en primer plano, lo que significa que se bloquean otras operaciones.
  2. unique: especifica si el índice es único. Si se establece en verdadero, no se permiten valores de clave de índice duplicados en el documento.
  3. dropDups: Ya sea para eliminar documentos duplicados al crear el índice. Si se establece en verdadero, todos los documentos duplicados se eliminarán cuando se cree el índice.
  4. name: El nombre del índice, utilizado para identificar y hacer referencia al índice.
  5. expireAfterSeconds: especifique la hora en que caduca el documento, en segundos. Si se establece en un número positivo, los documentos se eliminarán después de ese tiempo.

Al usar esta declaración, la sintaxis básica es:

db.collection.createIndex(keys, options)

Entre ellos, keysel parámetro se puede configurar como un documento clave o una matriz que contiene varias claves según sea necesario. optionsEl parámetro es opcional y se puede establecer en un documento que contenga opciones según se desee.

Cabe señalar que al crear un índice, se deben seleccionar el tipo y los parámetros apropiados de acuerdo con las necesidades reales y los requisitos de rendimiento. La creación de índices aumenta el espacio de almacenamiento y la sobrecarga computacional, y también se ve afectada cuando se modifican los documentos. Por lo tanto, se debe evaluar cuidadosamente la necesidad y el impacto de la indexación y elegir las opciones y los parámetros apropiados.

Crear múltiples índices de campo a la vez

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

Explicación del código:

        El método createIndex ahora considera múltiples valores de campo que ahora harán que se cree un índice basado en "Employeeid" y "EmployeeName". Employeeid: 1 y EmployeeName: 1 indican que se debe crear un índice en esos 2 valores de campo, mientras que: 1 indica que el índice debe estar en orden ascendente.

Cómo encontrar índices: usando el método getindexes()

#查找索引
db.ExampleDB.getIndexes()

 Explicación del código:

  1. El método getIndexes se utiliza para buscar todos los índices de la colección.
  2. La salida devuelve un documento que solo muestra que hay 2 índices en la colección, el campo _id y el otro es el campo de identificación del empleado. :1 significa que los valores de campo en el índice se crean en orden ascendente.

Cómo soltar un índice: dropindex()

Coloque un índice en MongoDB usando el método dropindex


#删除索引
db.ExampleDB.dropIndex({adncode:1})

Explicación del código:

  1. El método dropIndex toma un valor de campo obligatorio que debe eliminarse del índice.
  2. El valor de resultado devuelto nIndexesWas: 2 indica la cantidad de valores de campo presentes en el índice antes de ejecutar el comando. Recuerde que cada colección tiene un campo _id que también cuenta como el valor de campo del índice.
  3. El resultado ok:1 especifica que la operación se realizó correctamente y que el campo "adncode" se eliminó del índice.
  4. Para eliminar todos los índices de una colección a la vez, puede usar el comando dropIndexes.

eliminar todos los índices

db.ExampleDB.dropIndexes()

explicación del código

  1. El método dropIndexes eliminará todos los índices excepto el índice _id.

Pequeño resumen:

  • La definición de índices es importante para la búsqueda rápida y eficiente de documentos en una colección.
  • Los índices se pueden crear utilizando el método createIndex. Se puede crear un índice 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 un solo índice o dropIndex para eliminar todos los índices.

Uso de expresiones regulares (Regex) en MongoDB: rastreador disponible

Conceptos básicos de expresiones regulares:

        Las expresiones regulares se utilizan para la coincidencia de patrones, básicamente para encontrar y hacer coincidir cadenas en documentos y algunas reglas de validación.

Las expresiones regulares pueden ayudarnos a encontrar y ubicar rápidamente las cadenas correspondientes en los documentos.

Coincidencia de patrones usando el operador $regex

El operador regex en MongoDB se usa para buscar una cadena específica en una colección.

Por ejemplo, para los documentos que agregamos a la colección de destino anterior, ahora quiero consultar los documentos donde aparece la palabra "Dan". Luego puedo usar la clase de expresión regular para especificar criterios de búsqueda.

#使用正则表达式来制定搜索条件
db.ExampleDB.find(
	{
		员工姓名 : {$regex : "丹"}
	}
).forEach(printjson)

 Explicación del código:

        Aquí se encuentran todos los nombres de empleados con los caracteres "Dan". Por lo tanto, use el operador $ regex para definir los criterios de búsqueda de "Dan", y también puede ver en los resultados que se devuelven documentos que contienen los caracteres chinos correspondientes.

Use la gramática en expresiones regulares para describir con precisión las reglas de consulta

Regla "^"

Por ejemplo, podemos agregar "^" antes de la cadena de la regla de coincidencia para asegurarnos de que no haya caracteres delante de ella al hacer la coincidencia.

Se puede ver a partir de los resultados que la función del símbolo "^" es estipular que no debe haber otros caracteres delante de la palabra clave durante la búsqueda.

 regla "$"

También puede usar la regla del símbolo $ para especificar que no se permiten otros caracteres después del carácter coincidente.

 De los dos resultados, se puede ver que después de agregar el signo $, si hay caracteres después de la palabra clave, no participará en la búsqueda.

otras reglas

coincidencia de personajes

Los metacaracteres  . pueden coincidir con cualquier carácter excepto con la nueva línea.

Por ejemplo: . " puede coincidir con cualquier cadena, incluida la cadena vacía.

conjunto de caracteres

Use llaves  [] para representar un conjunto de caracteres, cualquiera de los cuales puede coincidir.

Por ejemplo: [abc] puede coincidir con caracteres  a, b o  c.

rango de caracteres

Se utiliza un guión para  - indicar un rango de caracteres, que puede coincidir con caracteres dentro de un cierto rango.

Por ejemplo: [a-z] puede coincidir con letras minúsculas.

conjunto de caracteres negados

Use llaves  [^] para expresar un conjunto de caracteres negados que coincida con cualquier carácter excepto los especificados en él.

Por ejemplo: [^abc] puede coincidir con   cualquier carácter excepto caracteres a, b o  .c

cuantificador

Los cuantificadores se utilizan para hacer coincidir el número de ocurrencias del elemento anterior. Los cuantificadores comunes incluyen:

  • * Indica que el elemento anterior puede aparecer 0 o más veces.
  • + Indica que el elemento anterior puede aparecer 1 o más veces.
  • ? Indica que el elemento anterior puede aparecer 0 o 1 vez.
  • {n} Indica que el elemento anterior aparece n veces.
  • {n,} Indica que el elemento precedente aparece al menos n veces.
  • {n,m} Indica que el elemento anterior aparece al menos n veces, pero no más de m veces.

Por ejemplo: a* puede coincidir con 0 o más letras  a.

Personaje de escape

En las expresiones regulares, algunos caracteres especiales deben escaparse  \ con barras invertidas, como  \d números y \s caracteres en blanco.

Por ejemplo: \d+ puede coincidir con uno o más números.

Coincidencia de patrones con $opciones

Cuando se usan operadores de expresiones regulares, también se pueden proporcionar opciones adicionales usando la palabra clave $options . Supongamos que queremos encontrar todos los documentos con caracteres ingleses en la colección de destino, independientemente de si distingue entre mayúsculas y minúsculas o no. Si se desea tal resultado, entonces necesitamos usar $options con parámetros que no distinguen entre mayúsculas y minúsculas .

Ahora, ejecutamos la misma consulta que la anterior, nunca veremos documentos con mayúsculas en inglés en los resultados. Para garantizar que se incluya en el conjunto de resultados, debemos agregar el parámetro "I" de $options.

db.Employee.find({EmployeeName:{$regex: “Gu”,$options:’i’}}).forEach(printjson)

Explicación del código:

1. $options con un parámetro "I" (que significa que no distingue entre mayúsculas y minúsculas) especifica que queremos que la búsqueda se realice independientemente de si la letra que encontramos es minúscula o mayúscula

2. Los resultados muestran que incluso si un documento tiene una letra de destino en mayúsculas, el documento aún se mostrará en el conjunto de resultados.

coincidencia de patrones sin operador regex

 El operador regex no se usa aquí, y la operación de coincidencia de expresiones regulares también se puede usar normalmente

#使用正则表达式来制定搜索条件
db.ExampleDB.find(
	{
		员工姓名 :  /库库丹/
	}
).forEach(printjson)

ilustrar:

        "//" Esta opción en MongoDB indica que las condiciones de búsqueda se especifican en estos delimitadores.

La forma de escribir expresiones regulares específicas se puede escribir de acuerdo con los documentos proporcionados anteriormente.

Supongo que te gusta

Origin blog.csdn.net/weixin_72186894/article/details/132104066
Recomendado
Clasificación