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메가바이트의 데이터를 반환합니다. batchSize를 설정하면 getMore는 16메가바이트의 데이터 또는 batchSize개 문서 중 더 작은 값을 반환합니다.

maxTimeMS

non-negative integer

선택 사항.

서버가 고정 사이즈 컬렉션에서 테일 커서(tailable cursor) 쿼리와 일치하는 새 문서를 기다리는 최대 시간을 나타냅니다. getMoreawaitData 테일 커서의 maxTimeMS를 설정하면 maxAwaitTimeMS()와 동일한 것으로 간주됩니다. 드라이버는 awaitDatatrue로 설정된 고정 사이즈 컬렉션의 테일 커서(tailable cursor)에 대해서만 getMore에 이 값을 설정합니다. 그렇지 않으면 커서를 생성하는 명령이 maxTimeMS를 설정합니다. 이 시간은 초기 작업과 모든 getMore 후속 작업에서 쿼리를 누적하여 실행하는 데 소요할 수 있는 최대 시간입니다. awaitDatatrue로 설정된 테일 커서(tailable cursor)의 경우 다음 사항이 적용됩니다.

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

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

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

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

  • 테일 커서(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" : NumberLong("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" : NumberLong("6813467763969884181")
}
}
}
필드
설명

cursor

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

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

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

"ok"

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

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

  • $clusterTime

  • operationTime

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

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

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

이와 마찬가지로, 세션 외부에서 생성된 커서의 경우 세션 내부에서 getMore를 호출할 수 없습니다.

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

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

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

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

MongoDB 8.0 부터 기존 queryHash 필드 의 이름이 planCacheShapeHash 로 변경되었습니다. 이전 MongoDB 버전을 사용하는 경우 planCacheShapeHash queryHash 가 표시됩니다.