Í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
dbAdminoreadWritesobre la base para crear índices.
Crear índices
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:
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.