当涉及到索引字段时,Spring Data
和MongoDB
遇到了很多问题。
我已经查看了文档,但他们并不擅长解释@Indexed(unique=true)
和@Indexed(unique=false)
之间的区别。
我有一个我想索引的字段,所以我可以对它执行快速查询。在这种情况下,它的电子邮件地址通常应该是唯一的,但emailAddress可能在一段时间内为空。
但是,一旦将一条记录作为null emailAddress,我就不能拥有任何其他具有null emailAddress的记录。 Spring Data拒绝使用null
emailAddresses 插入任何其他记录。它没有抛出任何不起作用的东西。
现在我已将其设置为unique=true
,但我正在考虑将其设置为unique=false
以解决此问题。
这会解决问题吗?
还有什么其他问题我可以通过放松这个来添加?
MongoDB是否允许我拥有多个相同且仍能快速查询的电子邮件地址?
答案 0 :(得分:11)
来自mongodb docs: http://docs.mongodb.org/manual/core/indexes/#unique-indexes
因此,如果您有唯一的密钥,请不要将其设置为空。
老实说,在您的用例(电子邮件字段)中,我相信您不需要使用唯一密钥,您可以使用稀疏密钥,因此,没有电子邮件的文档不会占用您的btree index,它将节省你的空间,并提高查找速度。