문서 메뉴
문서 홈
/
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
}
]

돌아가기

만들기

다음

확인