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

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

cursor.noCursorTimeout()

중요

Mongo쉬 방법

이 페이지에서는 메서드를 mongosh 설명합니다. 이는 Node.js와 같은 언어별 운전자 에 대한 설명서가 아닙니다.

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

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

noCursorTimeout() 메서드의 프로토타입 형식은 다음과 같습니다.

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

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

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

중요

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

MongoDB 드라이버와 는 승인되지 않은 쓰기 mongosh (write) 작업을 제외한 모든 작업을 서버 세션과 연결합니다. Mongo.startSession() 세션과 명시적으로 연결되지 않은 작업(예: 사용)의 경우, MongoDB 드라이버와 는 mongosh 암시적 세션을 생성하여 작업과 연결합니다.

세션이 분 이상 유휴 상태인 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 드라이버의 경우, 세션 생성에 대한 지침과 구문은 드라이버 설명서를 참조하세요.

이 페이지 평가하기

이 페이지의 내용