2012-12-27 9 views
5

私は非常に集中的な操作をしていますが、MongoCursorは数時間ループで実行されています(vb.netアプリケーションではC#ドライバを実行しています。それが、私はどのように私は長いタイムアウトを置かないそのタイムアウトの問題か?これは、理由はカーソルのタイムアウトのものであってもよいかもしれない?私はそれが起こって停止することができます方法はありMongoDB C#Driver 'カーソルが見つかりませんでした。'

Cursor not found 

しばらく例外に遭遇?

答えて

13

C#ドライバでカーソルのタイムアウトを無効にすることができます。

cursor.SetFlags(QueryFlags.NoCursorTimeout); 

それ以外の場合は、10分間使用しないと閉じます。さらにJohnnyHKの答えを明確に

Reference

+1

最後の要素までカーソルを使い果たしていないと、mongoでメモリリークが発生します。 – Nashenas

+0

バッチサイズを変更することもできます(http://stackoverflow.com/a/24200795/420867 - これはPythonの質問ですが、C#mongoドライバでも可能です) – drevicko

2

、これは構文です:

MongoCursor<BsonDocument> cursor = myCollection 
            .Find(query) 
            .SetSortOrder(SortBy.Ascending("TrackingNumber")) 
            .SetFlags(QueryFlags.NoCursorTimeout); 
0

私はMongoDB.Driverバージョン2.4.4とIFindFluentSetFlags方法を含まれていませんを使用しています。

関連する問題