Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo Spring Mongo crea un índice

Cómo Spring Mongo crea un índice

1. Crear un índice

1) Crear un índice único

db.collection.ensureIndex({a:1})

Crear un índice ascendente en el campo a (Para un índice de un solo campo, el orden ascendente o descendente es el mismo).

2) Crear un índice compuesto

db.collection.ensureIndex({a:1,b:-1})

3) Crear un índice disperso

p>

db.collection.ensureIndex({a:1},{sparse:true})

Los documentos sin un campo no se incluirán en el índice.

4) Crear un índice único

db.collection.ensureIndex({a:1},{unique:true})

Crear un índice único para el campo a.

Cuando mongo quiere indexar un determinado campo, si el campo no existe en un documento, el documento se indexará como vacío.

Dado que un índice único no puede tener valores duplicados, por lo que debe usarse junto con un índice disperso, por ejemplo:

Si el campo no está presente en el documento, el documento se indexará como vacío. Por ejemplo:

db.collection.ensureIndex({a:1},{ Unique:true,sparse:true})

Los índices compuestos también pueden agregar restricciones de unicidad, como g

db.collection.ensureIndex({a:1},{dropDups:true})

2. Ver el índice

1) Ver todos los elementos. en la biblioteca Index

db.system.index.collection.dropIndex({a:1})

2) Elimina todos los índices en la tabla

db .collection.dropIndexes()

4. Reconstruya el índice

db.collection.reIndex()

La operación anterior eliminará todos los índices de la tabla ( incluido _id) y reconstruir todos los índices.

5. Cree un índice en el conjunto de réplicas

En el nodo esclavo (nodo secundario) del conjunto de réplicas, la operación de creación del índice en segundo plano se convertirá en primer plano, donde se realizará la creación del índice. la operación

p>

Bloquea todas las operaciones de copia y lectura en el nodo esclavo.

El nodo esclavo comenzará a crear el índice después de que el nodo maestro complete la creación del índice. En un entorno de clúster fragmentado,

mongos enviará sureIndex() al nodo maestro del entorno del conjunto de réplicas en cada fragmento y luego lo copiará al nodo esclavo una vez que el nodo maestro complete la creación del índice. /p>

. .

Para minimizar el impacto de la creación de índices en un entorno de conjunto de réplicas, utilice el siguiente método para crear índices en el nodo esclavo:

1) Detenga el proceso mongod en un nodo esclavo y luego reinicie el proceso mongod usando otro número de puerto (sin la opción -replSet), momento en el cual

Se ejecuta una única instancia de mongod en modo independiente;

2) En este instancia mongod Cree un nuevo índice o reconstruya el índice;

3) Reinicie la instancia mongod. Deje que la operación de replicación alcance a este miembro;

4) Repita esta operación en otros nodos esclavos

5) Ejecute rs.stepDown en el nodo maestro de este conjunto (conjunto); () y luego repita el proceso en el nodo maestro anterior.

6. Claves ascendentes y descendentes en el índice

Para índices de una sola clave, el orden de las claves no es importante. Pero para un índice que cumple con los requisitos, el orden ascendente y descendente de las claves tiene un gran impacto.

Por ejemplo, si la tabla contiene el nombre de usuario (nombre de usuario) y la hora en que el usuario publicó el artículo (hora), y si necesita consultar con frecuencia los últimos artículos publicados por un usuario, debe crear el siguiente índice:

db.collection.ensureIndex({ "username":1, "time":-1})

7. Limitaciones del índice

1) Una tabla El índice no puede exceder 64

2) La clave del índice no puede exceder 1024bytes();

3) El nombre del índice (incluido el espacio de nombres) debe tener menos de 128 caracteres;

8. Estrategia de índice

Cada operación en MongoDB solo puede usar un índice y cada cláusula de $or puede usar su propio índice.

Para los siguientes índices:

db.collection.ensureIndex({"category":1, "item":1})

Si está consultando categoría, artículo o ambos se consultan juntos, el índice es válido. La única excepción es que cuando se utiliza el operador $or,

las consultas no pueden utilizar índices compuestos, solo un índice único.

db.collection.find({x:232})

db.collection.find({x:232,y:3})

db .collection.find({x:232,y:3,z:34})

Puede indexar {x:1,y:1,z:1} índice de soporte {x:1,z : 1} ¿Se admiten algunas consultas?

Para la consulta db.collection.find({x:5}).sort({z:1}), el índice {x:1,z:1} admite tanto la página de consulta como la clasificación, ¿Y Index

{x:1,y:1,z:1} solo admite consultas?

Utilice índices para ordenar los resultados de la consulta:

Por ejemplo, existe un índice de este tipo

db.collection.ensureIndex({a:1,b:1 , c:1,d:1})

Las siguientes operaciones de consulta y clasificación pueden utilizar índices:

db.collection.find().sort({a:1})

p>

db.collection.find().sort({a:1,b:1})

db.collection.find({a:4}).sort ({a: 1,b:1})

db.collection.find()collection.find({a:{$gt:4}}).sort({a:1,b: 1})

db.collection.find().sort({b:1 } )

db.collection.find( { b:5 } ).sort( { b :1 } )

Para las operaciones sort() que no utilizan índices, la operación sort() saldrá cuando la memoria utilizada exceda los 32Mb.