MongoDB 객체 ID
이전 장에서는 MongoDB의 객체 ID(ObjectId)를 사용했습니다.
이 장에서는 ObjectId의 구조를 이해하겠습니다.
ObjectId는 다음 형식의 12바이트 BSON 유형 데이터입니다.
처음 4바이트는 타임스탬프를 나타냅니다
다음 3바이트는 기계 식별 코드입니다.
다음 2바이트는 프로세스 ID(PID)로 구성됩니다.
마지막 3바이트 난수입니다.
MongoDB에 저장된 문서에는 "_id" 키가 있어야 합니다. 이 키의 값은 모든 유형이 될 수 있으며 기본값은 ObjectId 개체입니다.
컬렉션에서 각 문서에는 컬렉션의 각 문서를 고유하게 식별할 수 있도록 고유한 "_id" 값이 있습니다.
MongoDB가 다른 기존 방법(예: 자동으로 기본 키 증가) 대신 ObjectId를 사용하는 주된 이유는 서버의 기본 키 값을 동기화하고 자동으로 늘리는 것은 힘들고 시간이 많이 걸립니다.
새 ObjectId 만들기
다음 코드를 사용하여 새 ObjectId를 생성합니다.
>newObjectId = ObjectId()
위 문은 다음과 같이 생성된 고유 ID를 반환합니다.
ObjectId("5349b4ddd2781d08c09890f3")
생성된 ID를 사용하여 MongoDB에서 자동으로 생성된 ObjectId를 대체할 수도 있습니다.
>myObjectId = ObjectId("5349b4ddd2781d08c09890f4")
생성된 문서의 타임스탬프
ObjectId는 4바이트 타임스탬프를 저장하므로, 따라서 문서의 타임스탬프 필드를 저장할 필요가 없으며 getTimestamp 함수를 통해 문서 생성 시간을 얻을 수 있습니다.
>ObjectId("5349b4ddd2781d08c09890f4").getTimestamp()
위 코드는 문서 생성 시간을 ISO 형식으로 반환합니다.
ISODate("2014-04-12T21:49:17Z")
ObjectId를 문자열로 변환
어떤 경우에는 ObjectId를 문자열 형식으로 변환해야 할 수도 있습니다. 다음 코드를 사용할 수 있습니다.
>new ObjectId().str
위 코드는 Guid 형식의 문자열을 반환합니다.
5349b4ddd2781d08c09890f3