2012-02-06 9 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

関連する問題