document collation
[Kotlin] ERROR: Query failed with error code 2 and error message ‘Field ‘locale’ is invalid.
MongoDB find Query 예외
오늘은 MongoDB find query를 사용하면서 예상치 못한 예외에 직면했던 내용을 공유하려고 합니다.
먼저 Toy project 구성한 환경입니다.
- Spring Boot
- Webflux
- ReactiveMongodb
- Kotlin
The Probloem
Caused by: org.springframework.data.mongodb.UncategorizedMongoDbException: Query failed with error code 2 and error message 'Field 'locale' is invalid in: { locale: "order" }' on server localhost:27017; nested exception is com.mongodb.MongoQueryException: Query failed with error code 2 and error message 'Field 'locale' is invalid in: { locale: "order" }' on server localhost:27017
Order collection에서 locale field?? 제가 사용하는 field는 아닌데?? 정말이지.. 원인을 알 수가 없었고.. 너무 생뚱맞은 예외 메시지입니다. 원인은 바로... 아래 그림을 보시면.. Data Class에 MongoDB document를 선언했는데, 자동 완성 기능을 사용하다보니 바로.. 오타가 들어갔습니다.
Collection을 Collation으로 Collation는 MongoDB에서 데이터 정렬에 사용하는 예약어 입니다........
정말 어처구니없는 실수로... 2시간을 날려버린 거 같네요..
The Soultion
오타를 막기 위한 해결책 몇 가지 억지로 적어봅니다.
- 별칭 없이 작성하기..
@Document("order")
data class Order - @Document 자체를 생략해도.. data class name을 가지고 Document 유추가 가능하기에.. 좀 억지 같네요..ㅎㅎ
data class Order
그럼에도 가장 좋은 해결책은 오타가 발생하지 않도록 자동완성 사용 시 항상 주의를 기울이는 습관이 필요할 거 같습니다.
오늘은 오타로 인해 고생했던 내용을 공유하였습니다.
'Programming > Kotlin' 카테고리의 다른 글
[Kotlin] Datadog에서 Armeria 모니터링을 위한 Custom (0) | 2023.12.15 |
---|---|
[Kotlin] Spring Boot와 Armeria를 이용한 gRPC Server 톺아 보기 (0) | 2023.12.12 |
[Kotlin] Kotlin + Spring Webflux + gRPC 환경 구성 (0) | 2023.03.24 |
[Kotlin] ERROR: Only the Kotlin standard library is allowed to use the 'kotlin' package (0) | 2023.03.22 |
[Kotlin] 13. Kotlin에서 Coroutine이란? (0) | 2022.12.10 |