我正在尝试在Mongo数据库中进行选择 我正在使用这个DLL
MongoDB.Bson,MongoDB.Driver,MongoDB.Driver.Linq
我的桌子有超过55k行
一段时间后出现此错误
找不到光标
这是我的代码
var client = new MongoClient(connectionString);
var server = client.GetServer();
var database = server.GetDatabase("Database");
var collection = database.GetCollection<DesktopSessions>("desktop_sessions");
var query = (from e in collection.AsQueryable<DesktopSessions>()
where e.created_at > new DateTime(2012, 7, 1)
select e);
foreach (var item in query)
{
string id = item._id.ToString();
}
我该如何解决这个问题?
答案 0 :(得分:2)
我将代码更改为
var collection = database.GetCollection<DesktopSessions>("desktop_sessions");
var queryM = Query.GTE("created_at", new BsonDateTime(new DateTime(2012,7,1)));
var cursor = collection.Find(queryM);
cursor.SetFlags(QueryFlags.NoCursorTimeout);
有效!!
答案 1 :(得分:0)
其他选项是设置整个数据库的超时,这就是我正在做的事情。 您可以在配置,命令行,mongo shell甚至C#中执行此操作。
见这里: https://jira.mongodb.org/browse/SERVER-8188
这是我目前在我的init类中使用的解决方案
var db = this.MongoClient.GetDatabase("admin");
var cmd = new BsonDocumentCommand<BsonDocument>(new BsonDocument {
{ "setParameter", 1 },
{ "cursorTimeoutMillis", 3600000 }
});
db.RunCommand(cmd);
可在此处找到更多信息: https://docs.mongodb.com/v3.0/reference/parameters/#param.cursorTimeoutMillis