Spring Boot / Mongo不会使用索引注释创建索引

时间:2018-10-26 10:34:47

标签: mongodb spring-boot

我有以下内容:

@Document(collection = "linkmetadata")
public class LinkMetaData {
@Indexed(unique = true)
private String url;
...
}

但是无论何时创建集合,它都不会为url字段创建任何索引,就像它只是忽略注释一样。知道为什么会这样吗?

编辑:插入数据时也不会创建索引。而且,当我尝试获取特定URL的数据时,如果我两次输入相同的URL,则会抛出一个错误,即URL密钥不是唯一的,但是由于没有索引,因此它并不关心插入唯一的密钥。 >

4 个答案:

答案 0 :(得分:16)

在应用程序属性中使用auto-index-creation: true。在应用程序属性中添加滚滚行。

spring.data.mongodb.auto-index-creation: true

答案 1 :(得分:1)

编辑:此答案是在作者更新问题之前

我相信您需要在类声明的顶部使用@Document注释

所以你的课应该是

@Document
public class LinkMetaData {
@Indexed(unique = true)
private String url;
...
}

答案 2 :(得分:1)

我发现了问题。我还有另一个集合,其URL字段标记为unqiue。我必须在其中之一上指定索引的名称,否则似乎认为该索引已经存在,即使它在两个不同的集合上也是如此

@Indexed(name = "meta_url_index_unique", unique = true)
private String url;

答案 3 :(得分:1)

我也有同样的问题。解决我的问题的一个方法是从mongo数据库级别添加索引

db.city.createIndex( { "name": 1 }, { unique: true } );