MongoDB에서 db.<컬렉션명>.stats() 명령어 실행 결과에 나타나는 max 필드는 해당 컬렉션에 저장할 수 있는 문서(document)의 최대 개수를 의미합니다. 이 값은 주로 캡드(capped) 컬렉션을 생성할 때 설정되며, 지정한 개수를 초과하는 문서가 삽입되면 가장 오래된 문서부터 자동으로 삭제됩니다.
max 필드를 사용한 캡드 컬렉션 생성
max 필드는 컬렉션에 저장되는 문서 수를 제한하는 용도로 사용됩니다. 아래 예제처럼 createCollection() 메서드에 capped 옵션과 함께 size, max 값을 지정하면 됩니다.
> db.createCollection("demo673", { capped : true, size : 100, max : 50 } )
{ "ok" : 1 }위 명령은 다음과 같은 조건의 컬렉션을 생성합니다.
- capped : true — 고정 크기의 캡드 컬렉션으로 생성
- size : 100 — 컬렉션의 최대 크기를 100바이트로 제한
- max : 50 — 저장 가능한 문서 수를 최대 50개로 제한
문서 삽입하기
이제 생성한 컬렉션에 insertOne() 메서드로 문서를 삽입해 보겠습니다.
> db.demo673.insertOne({Name:"John",Age:23});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea3ec7304263e90dac943e8")
}
> db.demo673.insertOne({Name:"Bob",Age:21});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea3ec7804263e90dac943e9")
}
> db.demo673.insertOne({Name:"David",Age:20});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea3ec7f04263e90dac943ea")
}find() 메서드로 문서 조회하기
find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 확인할 수 있습니다.
> db.demo673.find();
위 명령을 실행하면 다음과 같은 결과가 출력됩니다.
{ "_id" : ObjectId("5ea3ec7304263e90dac943e8"), "Name" : "John", "Age" : 23 }
{ "_id" : ObjectId("5ea3ec7804263e90dac943e9"), "Name" : "Bob", "Age" : 21 }
{ "_id" : ObjectId("5ea3ec7f04263e90dac943ea"), "Name" : "David", "Age" : 20 }정리
캡드 컬렉션의 max 옵션은 로그 데이터처럼 최근 데이터만 유지하면 되는 경우에 특히 유용합니다. 단, size와 max 중 먼저 도달하는 제한이 적용되며, size는 필수 옵션이므로 반드시 함께 지정해야 합니다. 또한 캡드 컬렉션은 한 번 생성하면 크기나 문서 수 제한을 변경할 수 없으므로, 설계 단계에서 용도와 규모를 신중하게 결정하는 것이 좋습니다.