Я с удивлением вижу, что _id
не является уникальным индексом. Я предоставляю значения для поля _id
, а MongoDB создает индекс в порядке, но он не уникален. Я попытался обновить его (создав новый уникальный индекс в поле _id
), но ничего не изменилось. Я тоже не ошибся. Почему это происходит и как я могу сделать уникальный индекс на _id
?Почему идентификатор индекса Casbah/MongoDB не уникален?
Версия MongoDB (как указано version()
) 3.0.6, версия Casbah 2.8.2, версия Scala 2.11.7.
Мой документ Структура:
{_id=1, firstName=John, lastName=Doe, phoneNum=111-111-1111, active=true, [email protected]}
Индексы, как сбрасывали в журналах (метка времени и т.д. опущены для краткости). Я не уверен, почему каждый индекс печатает дважды, но это проблема для другого вопроса. Для записей, это как я печатаю индексы: collection.indexInfo.foreach { index => logger.debug(s"Index: ${index.toMap}") }
Index: {v=1, key={ "_id" : 1}, name=_id_, ns=akka.users}
Index: {v=1, unique=true, key={ "phoneNum" : 1}, name=phoneNum_1, ns=akka.users}
Index: {v=1, unique=true, key={ "email" : 1}, name=email_1, ns=akka.users, sparse=true}
Index: {v=1, key={ "_id" : 1}, name=_id_, ns=akka.users}
Index: {v=1, unique=true, key={ "phoneNum" : 1}, name=phoneNum_1, ns=akka.users}
Index: {v=1, unique=true, key={ "email" : 1}, name=email_1, ns=akka.users, sparse=true}
Я проверил перед публикацией, это позволило вставить. Я выяснил эту проблему, см. Мой ответ ниже. Я собираюсь поддержать ваш ответ как полезный, но не правильный. –