A criação de índices no MongoDB é uma operação idempotente. Então, executando
db.names.createIndex({name:1}) criaria o índice somente se ele ainda não existisse. O alias obsoleto (a partir do MongoDB 3.0) para createIndex() é garantirIndex() que é um pouco mais claro sobre o que
createIndex() realmente faz. Editar: Obrigado a ZitRo por esclarecer nos comentários que chamar
createIndex() com o mesmo nome, mas com opções diferentes de um índice existente lançará um erro MongoError: Index with name: **indexName** already exists with different options como explicado nesta pergunta. Se você tiver outros motivos para verificar, poderá acessar os dados de índice atuais de duas maneiras:
- A partir da v3.0, podemos usar
db.names.getIndexes()ondenamesé o nome da coleção. Documentos aqui. - Antes da v3.0, você pode acessar o
system.indexescoleção e faça umfindcomo bri descreve abaixo.