반응형

Spring WebFlux로 프로젝트를 진행하던 중 unique index가 필요해서 다음과 같이 지정했었다.

@Document(collection = "Category")
data class CategoryDocument(
    @Id
    val id: ObjectId? = null,
    @Indexed(unique = true, name = "category_name")
    var name: String,

)

이렇게 @Indexed(unqie=true)로 설정하면 해당 column에 unique constraint가 적용되어야 한다.

 

하지만 같은 이름으로 계속 저장을 해봐도, 에러가 생기지 않았다.

 

문제의 원인을 찾아보니, MongoDB에서는 @Indexed로 지정하는 것 뿐만 아니라

Spring에서 MongoDB에 이런 제약 조건을 설정 할 수 있도록 application.yml에 다음과 같은 옵션을 추가해야 한다고 한다.

 

spring:
  data:
    mongodb:
      auto-index-creation: false

 

이렇게 설정을 하고 MongoDB에서 

db.Category.getIndexes()의 쿼리를 날려보니

 

이런 식으로 unique가 설정된 것을 볼 수 있었다.

+ Recent posts