Today
Total
KoreanEnglishFrenchGermanJapaneseSpanishChinese (Simplified)
관리 메뉴

DB & AWS Knowledge

MongoDB 의 data type 본문

MongoDB, AWS DocumentDB/아키텍처 및 내부 구조

MongoDB 의 data type

`O` 2025. 5. 28. 02:08
728x90
반응형

이 페이지에서는 MongoDB 의 document 에 사용되는 data type 에 대하여 다룬다.

 

또한, 이 게시글은 도서 O'REILLY 사의 저서 '몽고DB 완벽가이드' 의 내용들을 심화 이해하기 위하여 작성하는 글이다.

이 페이지는 perplexity 를 통해 필자가 어떤 prompt 를 작성하여 공부하는지를 공유한다. ([] 로 표기)

또한, 검색이외에 추가로 덧붙일 내용은 ※ 로 추가한다.

 

AI 를 통해 관련된 자료를 검색하다보면 이전 게시글과 중복된 사항도 있으나 이는 복습 및 상기 차원에서 그대로 기재 되도록 한다.

또한, 이 게시글 부터는 Perplexity 의 강점중 하나인 출처 표기또한 동시에 표기한다.

 

 

[MongoDB 의 data type 은 JSON 의 어떤 특성을 가져왔는가]

 

MongoDB의 데이터 타입은 JSON의 주요 특성을 그대로 가져왔다. MongoDB는 데이터를 Document 형태로 저장하는데, 이 Document는 JavaScript Object Notation(JSON)의 구조와 동일하게 key-value 쌍으로 구성된다. 즉, 사람이 읽고 쓰기 쉽고, 기계가 파싱하기 쉬운 구조를 채택했다357.

MongoDB는 내부적으로 데이터를 저장할 때 JSON을 확장한 BSON(Binary JSON) 포맷을 사용한다. BSON은 JSON과 거의 동일한 구조를 가지지만, JSON이 지원하지 않는 추가적인 데이터 타입(예: 날짜, 바이너리, 정규식, 64비트 정수 등)을 지원한다는 점에서 차별화된다256. 이로 인해 MongoDB는 JSON의 직관적이고 유연한 문서 구조를 그대로 유지하면서도, 데이터베이스 시스템에 필요한 다양한 타입과 효율성을 동시에 제공할 수 있다.

정리하면, MongoDB의 데이터 타입은 JSON의 다음과 같은 특성을 가져왔다.

 

  • key-value 쌍의 문서 구조
  • 사람이 읽고 쓰기 쉬운 형식
  • 객체, 배열 등 복합 타입 지원
  • 데이터의 유연한 스키마 구조
  •  

여기에 더해, MongoDB는 JSON의 한계를 보완하기 위해 BSON을 도입하여 더 많은 데이터 타입과 효율적인 저장 방식을 제공한다256.

Citations:

  1. https://velog.io/@raminicano/MongoDB-%EA%B8%B0%EB%B3%B8%EC%A0%81%EC%9D%B8-%EC%89%98-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%83%80%EC%9E%85-SQL%EA%B3%BC-%EB%B9%84%EA%B5%90
  2. https://www.mongodb.com/ko-kr/docs/mongodb-shell/reference/data-types/
  3. https://ryu-e.tistory.com/2
  4. https://pro-yomi.tistory.com/entry/Flask-JSON%EA%B3%BC-BSON%EC%9D%98-%EC%B0%A8%EC%9D%B4-%EB%B2%88%EC%97%AD
  5. https://sunmin.tistory.com/49
  6. https://about-tech.tistory.com/104
  7. https://velog.io/@chayezo/MongoDB-JSON-vs.-BSON
  8. https://www.mongodb.com/ko-kr/docs/manual/reference/bson-types/
  9. https://hoing.io/archives/8839
  10. https://kyoulho.tistory.com/237

 

※ JSON 의 Data Type 은 아래 JSON 소개문을 통해서도 참조 할 수 있다.

 

[+] https://www.json.org/json-en.html

 

[위의 data type 중, null, 불리언, 숫자, 문자열, 날짜, 정규 표현식, 배열, 내장 도큐먼트, 객체 ID, 이진 데이터, 코드 에 대해서 설명해 주고 예시를 알려줘]

 

아래는 MongoDB의 주요 데이터 타입에 대한 설명과 예시다1345.

1. null

  • 설명: 값이 없음을 나타내는 타입이다.
  • 예시:
{ "deletedAt": null }


2. 불리언(Boolean)

  • 설명: 참(true) 또는 거짓(false) 값을 저장한다.
  • 예시:
{ "isActive": true, "isAdmin": false }


3. 숫자(Number)

  • 설명: 정수(int32, int64), 부동소수(double), Decimal128 등 다양한 숫자 타입을 지원한다.
  • 예시:
    • NumberDecimal은 고정 소수점 숫자를 표현한다.
{ "age": 30, "score": 95.5, "price": NumberDecimal("19.99") }


※ 
4 byte 부호정수는 NumberInt(), 8 byte 부호정수는 NumberLong() 을 사용한다.

4. 문자열(String)

  • 설명: 텍스트 데이터를 저장한다. UTF-8 인코딩을 사용한다.
  • 예시:
{ "name": "홍길동", "city": "Seoul" }

 

5. 날짜(Date)

  • 설명: 1970년 1월 1일 UTC 기준의 밀리초 (1/1000) 단위로 날짜와 시간을 저장한다.
  • 예시:
{ "createdAt": ISODate("2025-05-28T01:49:00Z") }


6. 정규 표현식(Regular Expression)

  • 설명: 문자열 패턴 매칭을 위한 정규표현식을 저장한다.
  • 예시:
    • /mongodb/i는 대소문자 구분 없이 "mongodb"를 찾는 패턴이다.
{ "pattern": /mongodb/i }


 MongoDB 의 정규 표현식은 JavaScript 의 정규 표현식에 기반한다.

7. 배열(Array)

  • 설명: 여러 값을 순서대로 저장하는 리스트 타입이다.
  • 예시:
     
{ "tags": ["database", "nosql", "mongodb"] }


8. 내장 도큐먼트(Embedded Document)

  • 설명: 문서 안에 또 다른 문서(객체)를 중첩하여 저장한다.
  • 예시:
{ "address": { "city": "Seoul", "zip": "12345" } }


9. 객체 ID(ObjectId)

  • 설명: MongoDB에서 각 도큐먼트의 고유 식별자로 사용되는 12바이트 값이다.
  • 예시:
{ "_id": ObjectId("5d35e069956ce18f101ef12d") }


12 바이트에서 4 바이트는 Unix Timestamp, 5 바이트는 부여된 프로세스 값, 3 바이트는 증분되는 카운터 값을 뜻한다.

10. 이진 데이터(Binary Data)

  • 설명: 이미지, 파일 등 바이너리 데이터를 저장할 때 사용한다.
  • 예시:
    • "SGVsbG8gV29ybGQ="는 Base64 인코딩된 바이너리 데이터다.
{ "file": BinData(0, "SGVsbG8gV29ybGQ=") }


※ 
MongoDB 에서 UTF-8 이외의 문자열을 저장하는 방법이기도하다.

11. 코드(JavaScript Code)

  • 설명: JavaScript 코드 조각을 저장한다.
  • 예시:
{ "compute": "function() { return x + y; }" }


이처럼 MongoDB는 다양한 데이터 타입을 지원하여, 유연하고 직관적인 데이터 모델링이 가능하다.

Citations:

  1. https://www.prisma.io/dataguide/mongodb/mongodb-datatypes
  2. https://www.mongodb.com/docs/atlas/app-services/schemas/types/
  3. https://hoing.io/archives/8839
  4. https://kb.objectrocket.com/mongo-db/the-data-types-in-mongodb-580
  5. https://estuary.dev/blog/mongodb-data-types/
  6. https://dad-rock.tistory.com/759
  7. https://oneshottenkill.tistory.com/220
  8. https://gist.github.com/debu999/3522dfe71d4349a539a5dcb025e2309c
  9. https://stackoverflow.com/questions/20988446/regex-for-mongodb-objectid
728x90
반응형
Comments