2012-02-06 2 views
2

안녕하세요. MongoDB와의 연결을 유지하는 데 문제가 있습니다. 연결이 끊어지면 프로그램이 중단되고 결국 연결이 끊긴 마지막 위치에서 계속 인쇄 할 것입니다. 나는 인덱스의 수를 유지하지만 그 수를 어떻게 사용합니까MongoDB 연결이 끊어진 후 현재 위치에서 계속

using (server.RequestStart(db)) 
{ 
    var cursor = col.FindAll(); 
    foreach (var item in cursor) 
    { 
     //code here 
    } 
} 

답변

1

가 왜 문제가 열려 MongoDB에 대한 연결을 유지하는가있는 커서에서 그 위치부터 시작? 쿼리 중간에 네트워크 연결이 끊어지고 있습니까? 시간 초과됩니까?

일반적으로 쿼리를 안정적으로 다시 시작할 수있는 유일한 방법은 결과가 정렬되어 있고 다시 처리 할 때 쿼리를 사용하여 이미 처리 한 문서를 건너 뛰는 것입니다 (즉, 정렬 키가 적은 문서는 건너 뜁니다. 처리 된 마지막 문서보다 크거나 같음).

아마도 RequestStart를 호출 할 필요는 없습니다. RequestStart를 호출해야하는 유일한 경우는 동일한 연결에서 데이터베이스 작업 시퀀스가 ​​모두 발생하도록하려는 경우 (비정상적인 상황에서만 필요함)입니다.

+0

나는 다른 데이터베이스에 대해 검증하고있는 백만 건이 넘는 레코드가 있지만 매 시간마다 특정 금액을 확인하는 것으로 제한되어 있으므로 한 시간에 최대 한 시간 씩 일시 중지 한 다음 내가 있던 곳에서 계속됩니다. 마지막 레코드에서 계속 정렬 키를 사용하는 구문의 예를 들어 줄 수 있습니까? – Dorf

+0

나는 "cursor.Skip = i;"를 사용하여 작업하고 있다고 생각한다. 시간이 초과되거나 연결이 끊어지면 내가 잘못된 방향으로 기울고 있는지 알려주십시오. Robert에게 감사드립니다. – Dorf

관련 문제