Spring Data MongoDB索引(唯一= true)

时间:2012-12-16 20:12:56

标签: java mongodb annotations spring-data

当涉及到索引字段时,Spring DataMongoDB遇到了很多问题。

我已经查看了文档,但他们并不擅长解释@Indexed(unique=true)@Indexed(unique=false)之间的区别。

我有一个我想索引的字段,所以我可以对它执行快速查询。在这种情况下,它的电子邮件地址通常应该是唯一的,但emailAddress可能在一段时间内为空。

但是,一旦将一条记录作为null emailAddress,我就不能拥有任何其他具有null emailAddress的记录。 Spring Data拒绝使用null emailAddresses 插入任何其他记录。它没有抛出任何不起作用的东西。

现在我已将其设置为unique=true,但我正在考虑将其设置为unique=false以解决此问题。

这会解决问题吗?

还有什么其他问题我可以通过放松这个来添加?

MongoDB是否允许我拥有多个相同且仍能快速查询的电子邮件地址?

1 个答案:

答案 0 :(得分:11)

来自mongodb docs: http://docs.mongodb.org/manual/core/indexes/#unique-indexes

因此,如果您有唯一的密钥,请不要将其设置为空。

老实说,在您的用例(电子邮件字段)中,我相信您不需要使用唯一密钥,您可以使用稀疏密钥,因此,没有电子邮件的文档不会占用您的btree index,它将节省你的空间,并提高查找速度。