Mongodb FindAll不能按预期工作

时间:2012-02-04 16:14:32

标签: c# mongodb mlab

[TestMethod]
public void TestLoop()
{
    var server = MongoServer.Create(
        @"mongodb://user:password@dbh74.mongolab.com:2700/XXX");

    var database = server["XXX"];

    MongoCollection<Item> sourceCollection =database.GetCollection<Item>("Item");
    var counter = 0;
    int batchSize = 200;

    List<item> batch = new List<item>();
    foreach (var item in sourceCollection.FindAll().SetBatchSize(batchSize))
    {
        counter++;
        batch.Add(item);
    }
}

这是一个简单的测试函数,用于检索用于测试目的的集合。它之前工作正常,但它被打破并抛出以下错误。

无法从传输连接中读取数据:连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接的主机无法响应而建立连接失败。

当光标想要获取下一批数据时抛出此错误。似乎连接被删除所以我修改了我的代码以便强制重新连接。

[TestMethod]
public void TestLoop()
{
    var server = MongoServer.Create(
        @"mongodb://user:password@dbh74.mongolab.com:2700/XXX");

    var database = server["XXX"];

    MongoCollection<Item> sourceCollection =database.GetCollection<Item>("Item");
    var counter = 0;
    int batchSize = 200;

    List<item> batch = new List<item>();
    foreach (var item in sourceCollection.FindAll().SetBatchSize(batchSize))
    {
        //serverX.Reconnect();
        counter++;
        if (counter% batchSize == 0)
        {
           server.Reconnect();
        }

        batch.Add(item);
    }
}

我想知道我的原始代码有什么问题。唯一不同的是我的mongodb托管mongolab刚刚将其版本提升为2.0.2。任何提示都很受欢迎。

1 个答案:

答案 0 :(得分:0)

解决。这不是代码或db版本的问题。有应用程序在后台运行并占用网络资源。

关闭该应用程序并重新运行测试。测试顺利。