2012-02-04 45 views
0
[TestMethod] 
public void TestLoop() 
{ 
    var server = MongoServer.Create(
     @"mongodb://user:[email protected]: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); 
    } 
} 

這是一個簡單的測試函數來檢索用於測試目的的集合。它工作正常之前,但它被打破,並拋出以下錯誤。Mongodb FindAll不能正常工作

無法讀取從傳輸連接數據:連接嘗試失敗,因爲連接的方沒有正確一段時間後響應或已建立的連接失敗,因爲連接的主機沒有反應。

由於光標想要獲得下一批數據,因此會拋出此錯誤。它似乎連接被刪除,所以我修改了我的代碼以解決強制重新連接。

[TestMethod] 
public void TestLoop() 
{ 
    var server = MongoServer.Create(
     @"mongodb://user:[email protected]: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。任何提示都很感激。

回答

0

解決。這不是代碼或數據庫版本的問題。有應用程序在後臺運行並消耗網絡資源。

關閉該應用程序並重新運行測試後。測試進行得很好。

+1

感謝您發佈的解決方案! – 2012-02-05 00:19:24