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

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 가 표시됩니다.

돌아가기

마지막 오류 가져오기