85 IndexOptionsConflict: Index already exists with different options / different name (o índice já existe com outras opções / outro nome)
MongoDBO que significa?
O índice que você está criando entra em conflito com um existente: um índice com o mesmo nome tem opções diferentes, ou um índice equivalente com a mesma chave e as mesmas opções já existe com outro nome. O MongoDB não permite recriar o mesmo índice com uma definição conflitante.
Por que acontece?
Criar um índice com o mesmo nome e a mesma chave, mas com opções diferentes (por exemplo, expireAfterSeconds, partialFilterExpression, collation); ou redefinir o equivalente de um índice existente com um nome diferente ('Index already exists with a different name'). A causa típica são definições de índice que divergem com o tempo em scripts da aplicação/de migração. O mesmo nome com uma chave diferente gera, em vez disso, 86 IndexKeySpecsConflict.
Como resolver
Veja o índice existente: db.my_collection.getIndexes(). Se realmente quiser alterar as opções, remova o índice antigo e crie o novo: db.my_collection.dropIndex('index_name') e depois createIndex(...). Caso contrário, faça a definição corresponder exatamente ao índice existente ou dê outro nome ao novo índice. Torne os scripts de migração idempotentes.
Mais entradas deste banco
- 20 IllegalOperationIllegal operation
- 48 NamespaceExistsNamespace (collection) already exists
- 11601 InterruptedOperation was interrupted
- 67 CannotCreateIndexCannot create index
- 27 IndexNotFoundIndex not found
- 79 UnknownReplWriteConcernUnknown replica set write concern
- 10107 NotWritablePrimarynot master / not writable primary