Índices

Todos los tipos de índice de MongoDB. Cada índice es global y se actualiza en la misma escritura que el documento.

TeselaDB tiene todos los tipos de índice de MongoDB: de un campo, compuestos, multikey, únicos, parciales, dispersos, ocultos, TTL, con collation, hashed, comodín, 2dsphere y 2d. Los índices de texto están en Búsqueda.

Requisitos

  • Un usuario con dbAdmin o readWrite sobre la base para crear índices.

Crear índices

JavaScript
db.pedidos.createIndex({ cliente: 1, creado: -1 });
db.usuarios.createIndex({ email: 1 }, { unique: true });
db.sesiones.createIndex({ ultimoAcceso: 1 }, { expireAfterSeconds: 3600 });

Índices globales

Cada índice es global: sus entradas se guardan ordenadas en el mismo espacio de claves que los documentos y se escriben en la misma operación. Si el documento y su entrada de índice caen en el mismo rango, la escritura es de una fase. Si no, va en una transacción. Nunca ves un índice que no coincide con sus documentos.

Unicidad en todo el clúster

Un índice único es único en todo el clúster, también en una colección con shard key y sin que la lleve como prefijo. MongoDB solo garantiza la unicidad dentro de cada shard.

Claves crecientes

Un índice sobre un valor que siempre crece (una fecha, un contador) concentra las escrituras en el último rango, porque cada entrada nueva va detrás de la anterior en el orden del índice. La opción propia teselaBuckets reparte sus entradas en cubos hash; el planificador junta los cubos al leer:

JavaScript
db.eventos.createIndex({ creado: 1 }, { teselaBuckets: 8 });

Construcción en línea

createIndexes construye el índice sin parar las escrituras de la colección, y collMod cambia hidden, expireAfterSeconds o unique de un índice existente.

Comprobar

db.pedidos.getIndexes() lista el índice nuevo. El explain de una consulta sobre sus campos muestra que lo usa.

Problemas frecuentes

  • Las escrituras se concentran en un solo rango porque el índice va sobre un valor que siempre crece. Créalo con teselaBuckets.
  • Un índice único no se crea porque la colección ya tiene documentos con valores repetidos en esos campos.

Ver también