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

커서.noCursorTimeout() (mongosh 메서드)

cursor.noCursorTimeout()

중요

Mongo쉬 방법

This page documents a mongosh method. This is not the documentation for a language-specific driver, such as Node.js.

MongoDB API 드라이버의 경우 언어별 MongoDB 드라이버 설명서를 참조하세요.

일정 시간 동안 활동이 없어도 커서가 자동으로 닫히지 않도록 서버에 지시합니다.

The noCursorTimeout() method has the following prototype form:

db.collection.find(<query>).noCursorTimeout()

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

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

중요

이 명령은 M0 및 Flex 클러스터에서 지원되지 않습니다. 자세한 내용은 지원되지 않는 명령을 참조하세요.

MongoDB drivers and mongosh associate all operations with a server session, with the exception of unacknowledged write operations. For operations not explicitly associated with a session (i.e. using Mongo.startSession()), MongoDB drivers and mongosh create an implicit session and associate it with the operation.

세션이 분 이상 유휴 상태인 30 경우 MongoDB 서버 해당 세션을 만료된 것으로 표시하고 언제든지 세션을 닫을 수 있습니다. MongoDB 서버 세션을 닫으면 진행 중인 모든 작업과 세션과 관련된 열린 커서도 종료됩니다. 여기에는 noCursorTimeout() maxTimeMS() 30 분보다 큰 또는 로 구성된 커서가 포함됩니다.

cursor.noCursorTimeout()db.collection.find() 발행하는 애플리케이션 을 생각해 보세요. 서버 의 에 의해 정의된 문서 배치 cursor.batchSize() find()와 함께 커서 반환합니다. 애플리케이션 서버 에 새 문서 배치 를 요청할 때마다 세션이 새로 고쳐집니다. 그러나 애플리케이션 30 현재 문서 배치 를 프로세스 데 분 이상 소요되면 세션이 만료로 표시되고 닫힙니다. 서버 세션을 닫으면 커서 noCursorTimeout() 도 로 구성되어 있음에도 불구하고 커서 됩니다. 애플리케이션 다음 문서 배치 요청하면 서버 오류를 반환합니다.

커서를 반환하는 작업의 경우 커서가 30분 이상 유휴 상태일 수 있는 경우 Mongo.startSession()를 사용하여 명시적 세션 내에서 작업을 실행하고 refreshSessions 명령을 사용하여 세션을 주기적으로 새로 고칩니다. 예시:

var session = db.getMongo().startSession()
var sessionId = session
sessionId // show the sessionId
var cursor = session.getDatabase("examples").getCollection("data").find().noCursorTimeout()
var refreshTimestamp = new Date() // take note of time at operation start
while (cursor.hasNext()) {
// Check if more than 5 minutes have passed since the last refresh
if ( (new Date()-refreshTimestamp)/1000 > 300 ) {
print("refreshing session")
db.adminCommand({"refreshSessions" : [sessionId]})
refreshTimestamp = new Date()
}
// process cursor normally
}

예시 작업에서db.collection.find()메서드는 명시적 세션과 연결됩니다. 유휴 상태일 때 서버 커서 닫지 못하도록 커서cursor.noCursorTimeout()로 구성됩니다. while 루프에는refreshSessions를 사용하여 5 분마다 세션을 새로 고치는 차단 포함되어 있습니다. 세션이 30 분의 유휴 시간 제한을 초과하지 않으므로 커서 무기한 열린 상태로 유지될 수 있습니다.

MongoDB 드라이버의 경우, 세션 생성에 대한 지침과 구문은 드라이버 설명서를 참조하세요.

이 페이지 평가하기

이 페이지의 내용