Crear índices sin parar el servicio

Crea o cambia índices mientras la colección sigue recibiendo escrituras.

Crea o cambia índices mientras la colección sigue recibiendo lecturas y escrituras, sin ventana de mantenimiento.

Requisitos

  • Un usuario con dbAdmin o readWrite sobre la base.

Crear el índice

JavaScript
db.pedidos.createIndex({ cliente: 1, creado: -1 });

createIndexes construye el índice sin parar las escrituras de la colección, que siguen entrando durante la construcción.

Cambiar un índice existente

JavaScript
db.runCommand({ collMod: "pedidos", index: { name: "cliente_1_creado_-1", hidden: true } });

Ocultar un índice antes de borrarlo te deja ver si alguna consulta lo echa de menos.

Comprobar

Cuando termina la construcción, db.pedidos.getIndexes() lista el índice nuevo junto a los que ya tenía la colección.

Problemas frecuentes

  • La construcción falla si un documento no cumple el índice, por ejemplo un valor repetido en uno único; el error nombra el primero en orden de _id.

Ver también