커서 쿼리 결과를 가리킵니다. 커서를 사용하면 데이터베이스 결과를 한 번에 한 배치 반복할 수 있습니다.
사용 사례
및 find() aggregate() 메서드는 결과 배치 와 함께 커서 반환합니다. 커서 수동으로 반복하거나 를 toArray() 사용하여 문서에 액세스 . 자세한 내용은 에서 커서 반복하기를 mongosh 참조하세요.
고정 사이즈 컬렉션의 경우 tailable cursor 사용하여 문서가 삽입될 때 조회 . 자세한 내용은 테일 커서(tailable cursor)를 참조하세요.
행동
MongoDB 다음과 같은 경우 클라이언트 세션 내에서 생성된 커서를 닫습니다.
클라이언트 커서 소진합니다.
커서 수동으로 닫습니다.
세션을 수동으로 종료합니다.
세션 시간이 초과되었습니다.
cursorTimeoutMillis 는 유휴 커서의 시간10 초과를 설정합니다(기본값: 분). 이 시간이 지나면 MongoDB 세션 외부의 유휴 커서를 닫습니다. 배치 반환하면 제한 시간이 연장됩니다. 를 사용하여 커서를 수동으로 killCursors 닫습니다.
localLogicalSessionTimeoutMinutes 는 세션 시간 제한을 설정합니다(기본값: 30 분).refreshSessions 세션을 연장하려면 를 killSessions 사용하고 세션을 종료하려면 를 사용합니다.
드라이버 및 mongosh 는 명시적 세션 외부에서 열린 커서에 대해 암시적 세션을 생성합니다.
커서 사용 중 동시 업데이트
커서 문서를 반환할 때 읽기 고려 (read concern) 수준에 따라 다른 작업이 배경 에서 실행 결과에 영향을 미칠 수 있습니다. 자세한 내용은 격리, 일관성 및 최신성 읽기를 참조하세요.
존재하지 않는 mongos 데이터베이스에 대한 커서 결과
MongoDB 7.2부터 mongos 배포에서 존재하지 않는 데이터베이스를 사용하려고 하는 집계 파이프라인 쿼리는 유효성 검사 오류를 반환합니다.
이전 버전에서는 이러한 애그리게이션 쿼리가 빈 커서를 반환했습니다.
시작하기
세부 정보
find 및 작업은 배치 aggregate 채울 때까지 실행됩니다. 그런 다음 쿼리 일시 중지됩니다. 일시 중지된 이 쿼리 는 커서 ID 로 식별되는 커서 입니다.
데이터베이스 는 배치 및 커서 ID 반환합니다. 드라이버 및 는 mongosh 이를 클라이언트 사이드 커서 에 저장 . 문서가 더 많은 경우 커서 를 통해 다음 배치 검색합니다. 나머지 배치 getMore 결과를 확인하려면 를 사용하고 더 cursor.objsLeftInBatch() cursor.hasNext() 많은 결과를 확인하려면 를 사용합니다.
커서 배치
커서는 16 MiB 최대 BSON 문서 크기로 cursor.batchSize() 제한되는 배치로 결과를 반환합니다. 를 사용하여 문서find() aggregate() 제한을 101 설정하다 . 및 의 기본값 getMore 배치 크기는 입니다. 후속 작업에는 기본값 제한이 없으며 16 MiB 메시지 크기만 있습니다.
정렬
인덱스 없이 정렬 작업을 수행하는 쿼리는 결과를 반환하기 전에 모든 문서를 메모리에 로드해야 합니다.
커서 정보
는 필드 에db.serverStatus() 커서 지표 반환합니다. 를 metrics.cursor metrics.cursor 참조하세요.