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

getMore (데이터베이스 명령)

getMore

findaggregate와 같이 커서를 반환하는 명령과 함께 사용하여 커서에서 다음 문서 배치를 반환합니다.

이 명령은 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.

  • MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스

참고

이 명령은 모든 MongoDB Atlas 클러스터에서 지원됩니다. 모든 명령에 대한 Atlas 지원에 관해 자세히 알아보려면 지원되지 않는 명령을 참조하십시오.

명령은 다음과 같은 구문을 가집니다:

db.runCommand(
{
getMore: <long>,
collection: <string>,
batchSize: <int>,
maxTimeMS: <int>,
comment: <any>
}
)

이 명령에는 다음과 같은 필드를 사용할 수 있습니다.

필드
유형
설명

getMore

long

커서 식별자입니다.

collection

문자열

커서가 작동 중인 컬렉션의 이름입니다.

batchSize

양의 정수

선택 사항. 각 배치에 반환되는 최대 문서 수입니다.

batchSize 이 설정되지 않은 경우 getMore 은 각 배치당 최대 16 메비바이트(MiB)를 반환합니다. batchSize 이 설정되면 getMorebatchSize 개의 문서 또는 16 MiB 중 더 작은 값을 반환합니다.

maxTimeMS

non-negative integer

선택 사항.

서버가 고정 사이즈 컬렉션 에서 tailable cursor 쿼리와 일치하는 새 문서를 기다리는 시간을 지정합니다. getMoreawaitData tailable 커서의 maxTimeMSmaxAwaitTimeMS()와 동일한 것으로 간주됩니다.

드라이버는 awaitDatatrue인 고정 사이즈 컬렉션의 테일 커서(tailable cursor)에 대해서만 이 값을 설정하다 . 그렇지 않으면 커서 생성하는 명령이 초기 작업과 모든 후속 getMore 작업에 대한 누적 시간 제한으로 maxTimeMS 를 설정합니다. awaitDatatrue로 설정하다 테일 커서(tailable cursor)의 경우 다음 사항이 적용됩니다.

  • 값을 제공하지 않으면 대기 시간 값이 1(1000밀리초)로 기본 설정됩니다.

  • maxTimeMSgetMore은 특정 getMore 명령에 사용되는 고정 사이즈 컬렉션에 새 문서가 삽입될 때까지 MongoDB가 대기하는 최대 시간을 나타냅니다.

  • maxTimeMS 는 각 호출에 대해 드라이버가 getMore에 개별적으로 설정합니다.

MongoDB는 db.killOp()와 동일한 메커니즘을 사용하여 시간 제한을 초과하는 작업을 종료하지만, 지정된 중단 지점에서만 작업을 종료합니다.

  • 테일 커서(tailable cursor)가 아닌 커서에서 getMore를 호출할 때는 maxTimeMS를 설정할 수 없습니다. 대신, 커서를 생성할 때 maxTimeMS()를 사용하여 설정할 수 있습니다.

  • 테일 커서(tailable cursor)에서 getMoremaxTimeMS와 함께 사용하려면 cursor.tailable()를 사용하여 커서를 만들 때 awaitData를 활성화합니다.

  • 커서를 생성하는 명령에 maxTimeMS를 설정하면 해당 작업에 대한 시간 제한만 설정됩니다. getMore를 사용하여 추가 작업에 대한 제한을 설정합니다.

  • 각 호출에 대해 getMoremaxTimeMS를 설정하거나 생략할 수 있으며 동일한 값을 사용할 필요는 없습니다.

  • 테일 커서(tailable cursor)의 경우, getMore의 시간 제한은 커서에서 시간 제한이 발생하기 전에 누적된 문서를 유지합니다. 테일 커서(tailable cursor)가 아닌 커서의 경우, 시간 제한으로 인해 오류가 발생합니다.

comment

any

선택 사항. 이 명령에 첨부할 사용자 제공 코멘트입니다. 설정되면 이 설명은 다음 위치에서 이 명령의 레코드와 함께 표시됩니다.

댓글은 유효한 모든 BSON types (문자열, 정수, 객체, 배열 등)이 될 수 있습니다.

생략된 경우, getMore는 원래의 find 또는 aggregate 명령에 설정된 comment를 상속합니다.

이 명령은 커서 정보와 다음 배치가 포함된 문서를 반환합니다.

예를 들어, 샤딩된 클러스터에서 find 작업으로 생성된 커서에서 getMore를 실행하면 아래 출력과 비슷한 문서가 반환됩니다.

{
"cursor" : {
"id" : Long("678960441858272731"),
"ns" : "test.contacts",
"nextBatch" : [
{
"_id" : ObjectId("5e8e501e1a32d227f9085857"),
"zipcode" : "220000"
}
],
"partialResultsReturned" : true,
"postBatchResumeToken": "< Resume Token >"
},
"ok" : 1,
"operationTime" : Timestamp(1586385239, 2),
"$clusterTime" : {
"clusterTime" : Timestamp(1586385239, 2),
"signature" : {
"hash" : BinData(0,"lLjejeW6AQGReR9x1PD8xU+tP+A="),
"keyId" : Long("6813467763969884181")
}
}
}
필드
설명

cursor

커서 ID와 문서의 nextBatch 를 비롯한 커서 정보가 포함되어 있습니다.

쿼리된 샤드를 사용할 수 없기 때문에 find (또는 후속 getMore 명령)이 부분 결과를 반환하는 경우 find 출력 에는 partialResultsReturned 지표 필드가 포함됩니다. 쿼리된 샤드를 초기 find 명령에 사용할 수 있지만 후속 getMore 명령에 하나 이상의 샤드를 사용할 수 없게 되는 경우, 샤드를 사용할 수 없는 동안 실행되는 getMore 명령만 출력에 partialResultsReturned를 포함합니다.

postBatchResumeToken 필드를 $changeStream 파이프라인과 함께 사용하여 이 지점부터 변경 스트림을 시작하거나 재개할 수 있습니다.

"ok"

명령에 성공했는지(1) 또는 실패했는지(0) 여부를 나타냅니다.

이러한 필드 외에도 db.runCommand() 응답에는 다음과 같은 복제본 세트 및 샤딩된 클러스터에 대한 정보가 포함되어 있습니다.

  • $clusterTime

  • operationTime

자세한 내용은 db.runCommand() Response를 참조하세요.

인증이 활성화된 경우 사용자가 만든 커서에 대해서만 getMore를 실행할 수 있습니다.

세션 내에서 생성된 커서의 경우 세션 외부에서 getMore를 호출할 수 없습니다.

세션 외부에서 생성된 커서의 경우 세션 내에서 getMore 를 호출할 수 없습니다.

다중 문서 트랜잭션의 경우:

  • 트랜잭션 외부에서 생성된 커서의 경우 트랜잭션 내부에서 getMore를 호출할 수 없습니다.

  • 트랜잭션 내에서 생성된 커서의 경우 트랜잭션 외부에서 getMore를 호출할 수 없습니다.

MongoDB 8.2부터는 커서 식별자가 지정된 collection에서 작업하는 커서의 이름과 일치해야 합니다. 일치하는 커서가 없는 경우 getMore 에서 오류가 반환됩니다.

MongoDB 5.1부터는 getMore 명령이 저속 쿼리로 기록되면 queryHashplanCacheKey 필드가 저속 쿼리 로그 메시지프로파일러 로그 메시지에 추가됩니다.

MongoDB 8.0부터 기존 queryHash 필드 planCacheShapeHash라는 새 필드 에 중복됩니다. 이전 MongoDB 버전을 사용하는 경우 queryHash 필드 만 표시됩니다. 향후 MongoDB 버전에서는 더 이상 사용되지 않는 queryHash 필드 제거 될 예정이며, 대신 planCacheShapeHash 필드 사용해야 합니다.