我有一個相當密集的操作,有一個MongoCursor
循環運行幾個小時(在通過c#驅動程序運行的vb.net應用程序中,我不太確定是什麼原因它,但我碰到一個例外一段時間後,MongoDB C#驅動程序未找到光標'
Cursor not found
這可能是因爲遊標超時,也許?有沒有一種辦法可以阻止它發生?如果超時問題我如何放置更長的超時?
我有一個相當密集的操作,有一個MongoCursor
循環運行幾個小時(在通過c#驅動程序運行的vb.net應用程序中,我不太確定是什麼原因它,但我碰到一個例外一段時間後,MongoDB C#驅動程序未找到光標'
Cursor not found
這可能是因爲遊標超時,也許?有沒有一種辦法可以阻止它發生?如果超時問題我如何放置更長的超時?
進一步明確JohnnyHK的答案,這是語法:
MongoCursor<BsonDocument> cursor = myCollection
.Find(query)
.SetSortOrder(SortBy.Ascending("TrackingNumber"))
.SetFlags(QueryFlags.NoCursorTimeout);
我使用MongoDB.Driver版本2.4.4和IFindFluent
不包含SetFlags
方法。用這個代替:
cursor.Options.NoCursorTimeout = true;
如果你沒有用盡光標到最後一個元素,這將導致在蒙戈內存泄漏。 – Nashenas
您也可以更改批量大小(按照http://stackoverflow.com/a/24200795/420867-這是一個python問題,但C#mongo驅動程序也應該可以) – drevicko