https://mongoosejs.com/docs/guide.html#options
스키마를 정의함에 있어 다음과 같이 옵션을 줄 수 있습니다.
new Schema({..}, options);
// or
var schema = new Schema({..});
schema.set(option, value);
모든 옵션은 위 공식 문서에서 살펴보시고, 저는 이번에 사용할 것만 추려내보겠습니다.
(나중에 shardkey나 writeconcern은 이용해야 할 때 추가로 작성하기로 합니다...)
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
https://darrengwon.tistory.com/222?category=870801
capped는 위 포스트에서도 살펴본 바 있습니다.
따라서, 간단히 생성하는 방법에 대해서만 언급하겠습니다.
capped: 해당 컬렉션의 용량 한계. 단위는 bytes입니다.
max : maximum number of documents (용량이 아니라 도큐먼트 갯수였네요)
new Schema({..}, { capped: 1024 });
new Schema({..}, { capped: { size: 1024, max: 1000, autoIndexId: true } });
'DB, ORM > 🍃mongoose, pymongo' 카테고리의 다른 글
text 인덱스를 활용한 mongoDB 검색 기능 구현 (0) | 2020.08.11 |
---|---|
mongoose populate를 통해 관계 Objectid를 통한 실제 객체를 추출하기 (0) | 2020.07.25 |
모델과의 관계 설정 (임베디드 방식/레퍼런스 방식) (0) | 2020.06.17 |
mongodb 기본 메서드 외 다른 살펴보기 (0) | 2020.06.10 |
검색을 빠르게 해주는 mongoDB 인덱스 (pymongo로 작업) (0) | 2020.06.09 |