La creazione di indici in MongoDB è un'operazione idempotente. Quindi eseguendo db.names.createIndex({name:1})
creerebbe l'indice solo se non esistesse già.
L'alias deprecato (a partire da MongoDB 3.0) per createIndex() è ensureIndex() che è un po' più chiaro su cosa createIndex()
effettivamente lo fa.
Modifica: Grazie a ZitRo per aver chiarito nei commenti che chiamando createIndex()
con lo stesso nome ma opzioni diverse rispetto a un indice esistente genererà un errore MongoError: Index with name: **indexName** already exists with different options
come spiegato in questa domanda.
Se hai altri motivi per controllare, puoi accedere ai dati dell'indice corrente in due modi:
- A partire dalla v3.0, possiamo utilizzare
db.names.getIndexes()
dovenames
è il nome della collezione. Documenti qui. - Prima della v3.0, puoi accedere a
system.indexes
raccolta e fai unfind
come bri descrive di seguito.