8

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

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

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

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

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

这会解决问题吗?

通过放松这个,我还能添加什么其他问题?

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

4

1 回答 1

12

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

因此,如果您有唯一键,请不要将其设置为 null。

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

于 2012-12-16T20:21:05.143 回答