일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- ethers websocket
- erc4337
- Vue
- 계정추상화
- rust 기초
- 오블완
- 스마트 컨트렉트 함수이름 중복
- 스마트컨트렉트 예약어 함수이름 중복
- ambiguous function description
- 러스트기초
- ethers type
- Vue.js
- cloud hsm
- git rebase
- 러스트 기초 학습
- SBT표준
- 티스토리챌린지
- ethers typescript
- redux toolkit 설명
- 러스트 기초
- vue기초
- ethers v6
- 스마트컨트렉트 함수이름 중복 호출
- redux 기초
- 체인의정석
- 머신러닝기초
- 컨트렉트 동일한 함수이름 호출
- cloud hsm 서명
- cloud hsm 사용하기
- erc4337 contract
- Today
- Total
체인의정석
Mongo DB에서의 not null 처리 본문
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 처리를 해주는 식으로 해결해야 한다.
BSON 작업 - Go 드라이버 v2.2 - MongoDB Docs
필드가 int64, uint, uint32 또는 uint64 유형이고 필드 값이 부호가 있는 int32에 들어갈 수 있는 경우, 필드는 BSON int64이 아닌 BSON int32로 직렬화됩니다. 값이 부호가 있는 int32에 맞지 않으면 이 태그는
www.mongodb.com
'개발 > database' 카테고리의 다른 글
Document DB 에서 upsert 사용하기 (0) | 2025.04.17 |
---|---|
MySQL) You are using safe update mode 에러 (1) | 2024.11.14 |
Nest.js & Cassandra 로 백엔드 세팅해보기 (0) | 2023.11.14 |
카산드라 DB mac에서 사용해보기 (0) | 2023.11.13 |
DB에서 인덱싱하는 법과 Sequalize에서 테이블 정의 시 index 넣는 방법 (0) | 2023.09.15 |