본문 바로가기
Study/MongoDB

[study] MongoDB 완벽 가이드 3판 - 몽고DB기본(2)

by hi_senii 2021. 11. 29.

기본 데이터형

MongoDB에서 JSON의 키/값 쌍 성질을 유지하며, 추가적인 데이터형 지원

 

각 데이터형 값을 표시하는 방식은 언어에 따라 다르다.

 

오늘 흔히 지원되는 데이터형이 셸에서 어떻게 도큐먼트의 일부로 표현되는지 알아보자.

 

가장 일반적인 데이터 형은 다음과 같다.

 

null

- null 값과 존재하지 않는 필드를 표현하는데 사용한다.

{"x" : null}

 

불리언(Boolean)

- 참과 거짓 값에 사용한다.

{"x" : true}

 

숫자

- 셸은 64비트 부동소수점 수를 기본으로사용한다.

{"x" : 3.14}
{"x" : 3}

4바이트 혹은 8바이트의 부호 정수는 각각 NumberInt 혹은 NumberLong 클래스를 사용한다.

{"x" : NumberInt("3")}
{"x" : NumberLong("3")}

 

문자열

- 어떤 UTF-8 문자열이든 문자열형으로 표현할 수 있다.(역시 비정형데이터베이스 답다,,,)

{"x" : "foobar"}

 

날짜

- MongoDB는 1970년 1월1일부터의 시간을 1/1000초 단위로 나타내는 64비트 정수로 날짜를 저장한다. 표준 시간대는 저장하지 않는다.(왜 1970년 1월 1일부터 저장하는 걸까,, 이 해에 몽고디비가 생긴걸까 추측해본다,,,,)

{"x" : newDate()}

 

정규 표현식

- 쿼리는 자바스크립트의 정규표현식 문법을 사용할 수 있다.

{"x" : /foobar/i}

 

배열

- 값의 셋이나 리스트를 배열로 표현할 수 있다.

{"x" : ["a", "b", "c"]}

 

내장 도큐먼트

- 도큐먼트는 부모 도큐먼트의 값으로 내장된 도큐먼트 전체를 포함할 수 있다.( 도큐먼트안에 도큐먼트를 포함하고 또 도큐먼트 안에 도큐먼트를 포함할 수 있는 건가,,,, 이 개수는 제한이 없는 것일까,,,,,,)

{"x" : {"foo" : "bar"}}

 

객체 ID

- 객체 ID는 도큐먼트용 12바이트 ID다.

{"x" : ObjectId()}

 

 

지금까지 상대적으로 많이 사용되는 데이터형 목록이었다.

 

다음은 상대적으로 덜 사용되는 데이터형 목록이다.

 

 

 

이진데이터

- 이진 데이터는 임의의 바이트 문자열이며 셸에서는 조작이 불가능하다. 이진데이터는 데이터베이스에 UTF-8이 아닌 문자열을 저장하는 유일한 방법이다........(와우)

 

코드

- 쿼리와 도큐먼트는 임의의 자바스크립트 코드를 포함할 수 있다.

{"x" : function() {/* ... */}}

 

 

 

MongoDB의 데이터형에 대한 자세한 내용은 MongoDB 완벽 가이드 3판의 부록 B에서 확인 가능하다.

 

 

 

 


 

 

 

 

오늘은 MongoDB에서 일반적으로 사용되는 데이터 형이 어떤 식으로 표현되는지에 대해 알아보았다. 사용되는 데이터 형이 지금까지 배운 언어나, sql언어랑 비교했을 때 크게 다른 것은 없었다. 하지만 표현되는 방식에 차이는 있는 것 같다. 관계형 데이터 베이스랑 비교했을 때 다른 점이 많아서 배울때 마다 궁금한 점은 많고 재밌기도 하다 많은 시간이 생겨서 빨리 많은 진도를 나가고 싶다.

 

* 이 글은 몽고 DB 완벽 가이드 3판<한빛미디어> 책을 토대로 작성되었습니다.