체인의정석

Mongo DB에서의 not null 처리 본문

개발/database

Mongo DB에서의 not null 처리

체인의정석 2025. 6. 11. 12:03
728x90

Mongo DB에서는 db단에서 null을 막아주는 not null 개념이 없다.
대신 객체를 bson으로 전환할 때 빈값을 막아주는 omitempty 설정만 존재한다고 한다.

" Go 유형을 BSON으로 변환하는 프로세스를 마셜링(marshalling)이라고 하고, 그 반대의 과정을 언마셜링(unmarshalling)이라고 합니다." 라고 mongo db docs에 써져 있었는데

db의 테이블에 해당하는 entitiy는 주로 struct형태로 작성하기 때문에 옵션에 omit empty를 설정하면 마셜링 과정에서 빈 값을 걸러내 주기 때문에 not null과 유사하게 사용할 수 있다는 생각을 했다.

하지만 omit empty가 걸러내는 빈값에는  0, false, "", [] 가 모두 포함된다고 하니 0이 들어갈 수 있는 경우나 boolean, 빈배열등이 들어갈 수 있는 부분에 대해서는 DB단에서의 처리는 생략하고 그 외의 부분에 대해서 omitempty를 달아주는 식으로 진행해야 한다.

이에 따라 쿼리 등을 사용할때, api에서 값을 받아올 때 null값 체크를 확실히 하고, 쿼리 시에도 notnull 처리를 해주는 식으로 해결해야 한다.


https://www.mongodb.com/ko-kr/docs/drivers/go/current/fundamentals/bson/#std-label-golang-bson-options

 

BSON 작업 - Go 드라이버 v2.2 - MongoDB Docs

필드가 int64, uint, uint32 또는 uint64 유형이고 필드 값이 부호가 있는 int32에 들어갈 수 있는 경우, 필드는 BSON int64이 아닌 BSON int32로 직렬화됩니다. 값이 부호가 있는 int32에 맞지 않으면 이 태그는

www.mongodb.com

 

728x90
반응형
Comments