1. MongoDB 데이터 타입 개요
- MongoDB는 BSON(Binary JSON) 형식을 사용하여 데이터를 저장합니다.
- BSON은 JSON의 확장된 형태로, 더 많은 데이터 타입을 지원합니다.
- 기존 JSON의 한계점
- 날짜형이 없다.
- 함수나 정규 표현식을 표현할 수 없다.
2. 기본 데이터 타입
2.1 문자열 (String)
- UTF-8 인코딩을 사용하는 텍스트 데이터
- 최대 크기: 16MB
{
name: "John Doe",
email: "john@example.com"
}
2.2 숫자 (Number)
- Integer (32bit, 64bit)
- Double (64bit)
- Decimal128 (128bit)
{
age: 25, // Integer
price: 99.99, // Double
balance: NumberDecimal("1000.55") // Decimal128
}
2.3 불리언 (Boolean)
- true 또는 false 값
{
isActive: true,
isDeleted: false
}
2.4 날짜 (Date)
- UNIX 시간으로부터의 밀리초 단위
- 1970년 1월 1일 부터의 시간을 밀리초로 표현
- 내부적으로 64bit 정수로 저장
{
createdAt: new Date(),
lastLogin: ISODate("2024-03-15T09:00:00Z")
}
3. 복합 데이터 타입
3.1 객체 (Object)
- 중첩된 필드를 포함하는 도큐먼트
- 도큐먼트는 부모 도큐먼트의 값으로 포함될 수 있음
{
address: {
street: "123 Main St",
city: "Seoul",
country: "South Korea"
}
}
3.2 배열 (Array)
- 값의 Set 또는 List를 배열로 표현할 수 있다.
- 여러 값을 순서대로 저장
- 다양한 타입의 요소 포함 가능
{
tags: ["mongodb", "database", "nosql"],
scores: [85, 92, 78],
mixed: ["string", 42, { key: "value" }]
}
4. 특수 데이터 타입
4.1 ObjectId
- ObjectId는 도큐먼트를 식별하는 고유한 값으로 12바이트 길이의 16진수 문자열입니다.
- 자동 생성되는 고유한 문서 ID
{
_id: ObjectId("507f1f77bcf86cd799439011")
}
4.2 Null
- null 값 표현
- 필드의 부재를 나타냄
{
middleName: null
}
4.3 Binary Data
- 이미지, 파일 등의 바이너리 데이터
- 최대 16MB
{
profileImage: BinData(0, "base64EncodedData")
}
4.4 정규식 (Regular Expression)
- 패턴 매칭을 위한 정규표현식
{
email: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/
}
5. 고급 데이터 타입
5.1 Timestamp
- 내부 MongoDB 작업을 위한 특수 타입
- 복제 작업 추적에 사용
{
lastModified: Timestamp(1624984548, 1)
}
5.2 MinKey/MaxKey
- 모든 BSON 요소와의 비교에서 최소/최대값
{
score: MinKey(),
highScore: MaxKey()
}