AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

고정 사이즈 컬렉션 쿼리

정렬 순서를 지정하지 않고 고정 사이즈 컬렉션을 쿼리하면 MongoDB가 삽입된 순서대로 결과를 반환합니다. 즉, 가장 오래된 문서가 먼저 반환됩니다.

자연 순서 를 사용하여 컬렉션에서 가장 최근에 삽입된 요소를 효율적으로 조회합니다. 이는 로그 파일에서 tail 명령을 사용하는 것과 유사합니다.

일반적으로 TTL(Time To Live) 인덱스는 고정 사이즈 컬렉션보다 더 나은 성능과 유연성을 제공합니다. TTL 인덱스는 날짜로 입력된 필드 값과 인덱스의 TTL 값에 따라 일반 컬렉션에서 데이터를 만료하고 제거합니다.

고정 사이즈 컬렉션은 쓰기 작업을 직렬화하므로 비고정 사이즈 컬렉션보다 동시 삽입, 업데이트 및 삭제 성능이 떨어집니다. 고정 사이즈 컬렉션을 만들기 전에 TTL 인덱스를 대신 사용할 수 있는지 고려하세요.

고정 사이즈 컬렉션에 동시 작성자가 있는 경우, MongoDB는 문서가 삽입 순서대로 반환되는 것을 보장하지 않습니다.

1
db.createCollection("log", { capped: true, size: 100000 } )
2
db.log.insertMany( [
{
message: "system start",
type: "startup",
time: 1711403508
},
{
message: "user login attempt",
type: "info",
time: 1711403907
},
{
message: "user login fail",
type: "warning",
time: 1711404209
},
{
message: "user login success",
type: "info",
time: 1711404367
},
{
message: "user logout",
type: "info",
time: 1711404555
}
] )

다음 예시는 그 방법을 보여줍니다.

log 컬렉션에서 typeinfo인 문서를 쿼리하고 기본 정렬 순서를 사용합니다.

db.log.find( { type: "info" } )
[
{
_id: ObjectId("660204b74cabd75abebadbc2"),
message: 'user login attempt',
type: 'info',
time: 1711403907
},
{
_id: ObjectId("660204b74cabd75abebadbc4"),
message: 'user login success',
type: 'info',
time: 1711404367
},
{
_id: ObjectId("660204b74cabd75abebadbc5"),
message: 'user logout',
type: 'info',
time: 1711404555
}
]

문서는 삽입된 순서대로 반환됩니다.

문서를 역삽입 순으로 반환하려면(즉, 가장 최근 문서가 먼저) $natural 매개 변수가 -1(으)로 설정된 sort() 메서드를 지정합니다.

다음 쿼리는 log 컬렉션에서 가장 최근의 문서부터 시작하여 최신 문서 3개를 반환합니다.

db.log.find().sort( { $natural: -1 } ).limit(3)
[
{
_id: ObjectId("6601f2484cabd75abebadbbb"),
message: 'user logout',
type: 'info',
time: 1711404555
},
{
_id: ObjectId("6601f2484cabd75abebadbba"),
message: 'user login success',
type: 'info',
time: 1711404367
},
{
_id: ObjectId("6601f2484cabd75abebadbb9"),
message: 'user login fail',
type: 'warning',
time: 1711404209
}
]