2012-12-16 75 views
3

當涉及索引字段時,Spring數據和MongoDB存在很多問題。我已經閱讀了文檔,但他們並不擅長解釋@Indexed(unique = true)和@Indexed(unique = false)之間的區別。我有一個我想索引的字段,所以我可以對它執行快速查詢。在這種情況下,它是通常應該是唯一的電子郵件地址,但emailAddress可能在一段時間內爲空。但是,一旦一個記錄爲空電子郵件地址,我不能有任何其他記錄與空電子郵件地址。 Spring Data拒絕使用null emailAddresses插入任何其他記錄。它沒有拋出任何不起作用的東西。現在我已將它設置爲unique = true,但我正在考慮將其設置爲unique = false來解決此問題。這會解決問題嗎?還有什麼其他問題可以通過放鬆來補充? MongoDB是否允許我有多個相同的郵件地址,並且在查詢時仍然很快?春季數據MongoDB索引(唯一= true)

回答

6

從MongoDB的文檔: http://docs.mongodb.org/manual/core/indexes/#unique-indexes

所以,如果你有一個獨特的關鍵,千萬不要將其設置爲null。老實說,在你的用例(電子郵件字段)中,我相信你不需要使用唯一鍵,你可以使用稀疏鍵,所以,沒有電子郵件的文檔不會佔用你的btree索引,這將節省您的空間,並提高查找速度。