MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Verificando se existe um índice no mongodb


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:
  1. A partir da v3.0, podemos usar db.names.getIndexes() onde names é o nome da coleção. Documentos aqui.
  2. Antes da v3.0, você pode acessar o system.indexes coleção e faça um find como bri descreve abaixo.