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)