Spring MVC如何修改mongoDB的现有id索引?

Spring MVC如何修改mongoDB的现有id索引?,mongodb,indexing,spring-data,Mongodb,Indexing,Spring Data,默认情况下,Mongo似乎为文档的\u id字段添加了一个名为\u id的索引 在spring中,我试图使该索引唯一,但以下代码不起作用:(它不起任何作用)我知道语法是正确的,因为如果我更改该代码以在不同字段上创建索引,它就会起作用 @Document @CompoundIndexes(value=@CompoundIndex(name="_id_", def="{'_id':1}", unique=true)) public class Message { @Id private Str

默认情况下,Mongo似乎为文档的
\u id
字段添加了一个名为
\u id
的索引

在spring中,我试图使该索引唯一,但以下代码不起作用:(它不起任何作用)我知道语法是正确的,因为如果我更改该代码以在不同字段上创建索引,它就会起作用

@Document
@CompoundIndexes(value=@CompoundIndex(name="_id_", def="{'_id':1}", unique=true))  
public class Message {

@Id
private String messageId;

我的问题是,如何使用Spring修改/更新使_id索引唯一?

好吧,@johnyhk的答案是正确的,MongoDB中的默认_id索引是唯一的,所以问题在于Spring

我将此问题记录在日志中:


与spring无关,但与MongoDB有关。您不能修改主键,因为它是必需的。您实际上是想在
\u id
字段上创建一个复合值吗?
\u id
上的默认索引已经是唯一的。否id上的默认索引不是唯一的,我可以验证这一点,因为mongo允许再次保存具有相同id的文档。实际上,它会再次保存,但会覆盖上一个文档。我希望它会失败,出现重复键异常。@Marc没有显示索引不是唯一的。这是一个不同的问题,与您如何尝试创建重复的文档有关,驱动程序假定您打算更新现有文档。@JohnnyHK,您是对的。作为测试,我尝试插入一个具有现有ID的新文档,但出现了重复密钥错误,因此显然它是唯一的。这意味着我的代码(或spring)试图更新文档而不是创建新文档,这也是正确的。当我有一个解决方案时,我会用它更新(代码方面的)谢谢!