Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / /

고정 사이즈 컬렉션 쿼리

이 페이지의 내용

  • 이 작업에 대하여
  • 다중 동시 쓰기
  • 시작하기 전에
  • 고정 사이즈 컬렉션 생성
  • 샘플 데이터 삽입
  • 단계
  • 삽입 순서대로 문서 반환
  • 가장 최근 문서 반환
  • 자세히 알아보기

정렬 순서를 지정하지 않고 고정 사이즈 컬렉션을 쿼리하면 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
}
]

돌아가기

만들기