MongoDB Capped 컬렉션이란?
네, MongoDB에서 capped(캡) 컬렉션을 사용할 수 있습니다. Capped 컬렉션은 고정된 크기를 가진 컬렉션으로, 삽입 순서를 기준으로 문서를 삽입하고 조회하는 높은 처리량의 작업을 지원하도록 설계되었습니다.
Capped 컬렉션의 가장 큰 특징은 지정된 크기(size)나 최대 문서 수(max)를 초과하면 가장 오래된 문서가 자동으로 삭제된다는 점입니다. 이러한 특성 덕분에 로그 데이터 저장이나 최신 정보만 유지하면 되는 용도로 활용하기에 매우 적합합니다.
Capped 컬렉션 생성하기
이제 컬렉션을 생성하면서 capped 옵션을 함께 설정하여 고정 크기 컬렉션을 만들어 보겠습니다. 아래 예제에서는 크기 100바이트, 최대 문서 수 4개로 설정했습니다.
> db.createCollection("demo539", { capped : true, size :100, max : 4 } );
{ "ok" : 1 }컬렉션이 정상적으로 생성되었다면, 다음과 같이 문서를 하나씩 삽입해 보겠습니다.
> db.demo539.insertOne({"Name":"Chris"});
{ "acknowledged" : true,
"insertedId" : ObjectId("5e8c9094ef4dcbee04fbbc09")
}
> db.demo539.insertOne({"Name":"David"});
{ "acknowledged" : true,
"insertedId" : ObjectId("5e8c9098ef4dcbee04fbbc0a")
}
> db.demo539.insertOne({"Name":"Bob"});
{ "acknowledged" : true,
"insertedId" : ObjectId("5e8c909bef4dcbee04fbbc0b")
}
> db.demo539.insertOne({"Name":"Sam"});
{ "acknowledged" : true,
"insertedId" : ObjectId("5e8c909eef4dcbee04fbbc0c")
}
> db.demo539.insertOne({"Name":"Carol"});
{ "acknowledged" : true,
"insertedId" : ObjectId("5e8c90a4ef4dcbee04fbbc0d")
}위 코드는 demo539라는 이름의 capped 컬렉션을 생성하고 총 5개의 문서를 삽입합니다. 하지만 max 값이 4로 설정되어 있기 때문에, 가장 먼저 삽입된 "Chris" 문서는 자동으로 삭제됩니다.
find() 메서드로 문서 조회하기
find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 간단하게 조회할 수 있습니다.
> db.demo539.find();
위 명령을 실행하면 다음과 같은 결과가 출력됩니다.
{ "_id" : ObjectId("5e8c9098ef4dcbee04fbbc0a"), "Name" : "David" }
{ "_id" : ObjectId("5e8c909bef4dcbee04fbbc0b"), "Name" : "Bob" }
{ "_id" : ObjectId("5e8c909eef4dcbee04fbbc0c"), "Name" : "Sam" }
{ "_id" : ObjectId("5e8c90a4ef4dcbee04fbbc0d"), "Name" : "Carol" }출력 결과를 보면 처음 삽입한 "Chris" 문서가 사라지고, 나중에 삽입된 "David", "Bob", "Sam", "Carol" 4개의 문서만 남아 있는 것을 확인할 수 있습니다. 이처럼 capped 컬렉션은 설정된 제한(max 또는 size)을 초과하면 오래된 문서부터 자동으로 제거하여 항상 최신 데이터만 유지합니다.