[MongoDB]-mongoose 스키마 options

hannah·2023년 11월 2일
0

db

목록 보기
6/6

mongoose 공식문서에서 다양한 옵션들을 확인할 수 있다. 이중에 자주 사용하는 옵션에 대해 정리해보았다.

- id

mongodb에서는 각 도큐먼트에 식별자인 _id를 자동으로 생성한다.
이는 option에서 id를 false로 설정하면 이 프로퍼티를 받지 않을 수 있다.

// default behavior
var schema = new Schema({ name: String });
var Page = mongoose.model('Page', schema);
var p = new Page({ name: 'mongodb.org' });
console.log(p.id); // '50341373e894ad16347efe01'

// disabled id
var schema = new Schema({ name: String }, { id: false });
var Page = mongoose.model('Page', schema);
var p = new Page({ name: 'mongodb.org' });
console.log(p.id); // undefined

- timestamps

createdAt, updatedAt 필드를 자동 생성한다.

const thingSchema = new Schema({..}, { timestamps: true });
const Thing = mongoose.model('Thing', thingSchema);
const thing = new Thing();
await thing.save(); // `created_at` & `updatedAt` will be included

만약 속성명을 바꾸고 싶다면 아래와 같이 작성하면 된다.

{ timestamps: { createdAt: 'created_at' } }

- Capped

capped는 데이터 저장소가 정해진 용량을 초과하면 가장 오래된 데이터를 자동으로 삭제하는 방식을 나타낸다. 이는 데이터의 크기를 바이트(Byte) 단위로 제한하는 것을 의미한다.

size는 Byte단위(1 바이트는 8 비트)이며 "Capped"에서 size(용량)는 데이터를 저장하는데 허용되는 최대 바이트 수를 의미한다.
예를 들어, size를 4096 바이트로 설정하면, 데이터 저장소에는 4096 바이트보다 많은 데이터가 저장되지 않는다. 만약 사용자가 4096 바이트 이상을 설정하려고 하면, 시스템은 자동으로 이 값을 256의 배수로 조정하여 증가시키고
또 다른 예로 10000을 입력하면 10240이 된다.

이렇게 함으로써 정확한 용량 제한을 유지하고 가장 오래된 데이터를 삭제함으로써 용량 초과를 방지할 수 있다.

new Schema({..}, { capped: 1024 });
new Schema({..}, { capped: { size: 1024, max: 1000, autoIndexId: true } });

0개의 댓글