使用morphia将现有索引转换为unique(mongodb)

使用morphia将现有索引转换为unique(mongodb),mongodb,morphia,Mongodb,Morphia,我在使用Morhia的字段上有一个现有索引 @Indexed public String field; 现在我想把它转换成一个唯一的索引 @Indexed(unique = true) public String field; 在应用程序启动时,我调用db.ensureIndex()——但是索引的唯一性并没有反映在mongo中 为什么会失败?实现这一目标的最佳方式是什么 MongoDB中索引的属性在创建后不能修改;因此,不能直接将非唯一索引转换为唯一索引。您必须手动删除索引,然后才能将其重新

我在使用Morhia的字段上有一个现有索引

@Indexed
public String field;
现在我想把它转换成一个唯一的索引

@Indexed(unique = true)
public String field;
在应用程序启动时,我调用db.ensureIndex()——但是索引的唯一性并没有反映在mongo中


为什么会失败?实现这一目标的最佳方式是什么

MongoDB中索引的属性在创建后不能修改;因此,不能直接将非唯一索引转换为唯一索引。您必须手动删除索引,然后才能将其重新创建为唯一索引。您可以直接使用mongo shell执行此操作:请参阅。

初始索引已经由Morphia创建,如果您删除它,它仍在创建中?如果不再创建索引,请检查是否在正确的包上调用了
ensureIndex()
。我曾经重构过我的包结构,但没有在
ensureIndexes()
调用中进行重构,我不明白为什么不再创建我的索引;-)