我很驚訝地看到_id
不是一個獨特的索引。我爲_id
字段提供了值,MongoDB創建了一個索引,但它不是唯一的。我試圖更新它(通過在_id
字段上創建一個新的唯一索引),但沒有任何改變。我也沒有得到任何錯誤。爲什麼會發生這種情況,我如何才能在_id
上創建唯一索引?爲什麼Casbah/MongoDB id索引不唯一?
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}
我在發佈前檢查過,它允許插入。我發現了這個問題,請看下面的答案。我會盡快答覆你的答案,但不是正確答案。 –