Spring MongoRepository正在更新或插入而不是插入

我用的是:

org.springframework.data.mongodb.repository.MongoRepository 

我从一个空DB开始,例如用_id = 1234创建一个对象,然后将一些其他String字段设置为hello ,然后执行:

 repository.save(object); 

一切都很好,它将文档保存在MondoDB中。

我创建一个NEW对象,设置相同的_id = 1234但将另一个String字段设置为world ,然后设置为另一个save:

 repository.save(newObject); 

结果:保存工作但更新原始对象。

预期结果:这应该因DuplicateKeyException而失败,因为_id是唯一的,并且我在执行每次保存时使用2个单独的对象。

spring的缺陷还是我做错了什么?

根据定义, 保存应该更新upsert样式中的对象,如果存在则更新,如果不存在则更新。 阅读MongoDb 网站上的save操作文档

mongodb中的插入操作具有您期望的行为,但是从MongoRepository文档中可以看出insert被委派为save,因此它不会有任何区别。 但你可以尝试一下,看看它是否适合你。 否则你可以先做一个get来检查对象是否存在,因为它是一个索引查找它会很快。

只有当你在其中一个字段中有@Id注释后,应用程序才会更新

 @Document(collection="bus") public class Bus { // @Indexed(unique=true, direction=IndexDirection.DESCENDING, dropDups=true) @Id private String busTitle; private int totalNoOfSeats; private int noOfSeatsAvailable; private String busType; } 

但不知怎的,我无法使用@Indexed(unique = true,direction = IndexDirection.DESCENDING,dropDups = true)