일반적으로 db에서 컬렉션을 생성하는 쉘 명령어는 다음과 같습니다.
db.createCollections('[컬렉션 이름]') // 컬렉션을 생성합니다.
ex - db.createCollection("secondCollection")
컬렉션 생성시에는 다양한 옵션을 줄 수 있습니다. 이에 관한 공식 문서는 다음과 같습니다.
db.createCollection( <name>,
{
capped: <boolean>,
autoIndexId: <boolean>,
size: <number>,
max: <number>,
storageEngine: <document>,
validator: <document>,
validationLevel: <string>,
validationAction: <string>,
indexOptionDefaults: <document>,
viewOn: <string>, // Added in MongoDB 3.4
pipeline: <pipeline>, // Added in MongoDB 3.4
collation: <document>, // Added in MongoDB 3.4
writeConcern: <document>
}
)
⚡ Capped 컬렉션
이번에 살펴볼 옵션은 Capped입니다. 정해진 용량을 초과하게 되면 가장 오래된 데이터를 삭제하게 됩니다. 굴어들어온 돌이 박힌 돌을 빼내는데 마지막 돌을 빼낸다고 보면 됩니다. size는 Byte단위 입니다. 만약 size에 4096 바이트 이상을 입력한다면 자동으로 256의 배수로 수정되어서 올라갑니다. 예를 들어 10000을 입력하면 10240이 됩니다.
여기서는 시험삼아 8바이트만 설정해보겠습니다.
db.createCollection("CappedCollection", {capped: true, size: 8})
보시면 알겠지만 a부터 순차적으로 넣었을 때 8Byte가 넘어갔을 경우 자동으로 먼저 들어온 a부터 삭제되어있음을 확인할 수 있습니다.
이러한 Capped 컬렉션은 로그 데이터나 일정시간만 보관하는 데이터를 보관하기에 용이합니다.
🎈 capped 컬렉션은 삭제할 수 없다.
You cannot delete documents from a capped collection. To remove all documents from a collection, use the drop() method to drop the collection and recreate the capped collection."
즉, capped된 컬렉션 내에서는 일부 도큐먼트만 삭제하는 것이 불가능합니다. 컬렉션을 통째로 drop한 후 새로 만들어야만 합니다.
'DB, ORM > 🍃 mongoDB (shell)' 카테고리의 다른 글
원자성을 유지를 위한 Transaction(트랜잭션) + WriteConcern/ReadConcern (0) | 2020.07.24 |
---|---|
Robo 3T 설치 및 활용 (0) | 2020.06.08 |
ubuntu에서 mongodb 설치하기 (0) | 2020.06.08 |
mongoDB 유저 생성 + shell 명령어 + 원자성 + cursor & batch (0) | 2020.04.06 |
mongoDB 설치 (window 기반) (0) | 2020.02.27 |