반응형
ObjectId
MongoDB에서 모든 문서에는 고유하게 식별하는 "_id" 필드가 포함되어 있다.
이는 기본키 역할을 하며 12byte의 BSON 타입으로 생성된다.
- 처음 4 바이트는 문서의 유닉스 타임스탬프를 나타낸다.
- 다음 3 바이트는 MongoDB 서버 가 실행 중인 머신 ID이다.
- 다음 2 바이트는 프로세스 ID이다.
- 마지막 필드는 objectid를 증가시키는 데 사용되는 3개의 바이트이다.
BSON 타입
- "Binary JSON"의 약자로 바이너리 타입의 JSON 형식이다.
- 기계어로 변환되기 때문에 사람이 읽기 위해선 다시 디코딩 과정을 거쳐야 한다.
- JSON에서 지원하지 않는 날짜나 바이너리 타입등을 추가적으로 지원한다.
- 타입이나 길이 정보를 인코딩해 저장하기 때문에 JSON에 비해 빠르게 탐색한다.
ObjectId 사용하기
const { MongoClient, ObjectId } = require('mongodb');
...
db.collection('posts').findOne({ _id: new ObjectId(postId) });
...
db.collection('posts').deleteOne({ _id: new ObjectId(postId) });
왜 new 키워드를 사용할까?
String 타입인 postId를 ObjectId 객체로 변경해야 한다.
new ObjectId()로 인스턴스화 시켜 사용한다.
반응형