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.indexes
coleção e faça umfind
como bri descreve abaixo.