2015-06-01 79 views
0

我試圖連接到從C#我的MongoDB。我不確定我是否真的連接。C#連接和查詢現有的MongoDB

這裏是連接到我的MongoDB:

var connectionString = "mongodb://localhost:8081"; 
MongoClient client = new MongoClient(connectionString); 
var db = client.GetDatabase("nutchdatabase"); 
var collection = db.GetCollection<BsonDocument>("webpage"); 

我不知道如何測試,以確保我連接的。

我也試圖查詢我的分貝,但我無法讀取數據,以找出是否它的工作與否。我試着按照教程here,但它似乎沒有幫助。我看過的每個引用都涉及到爲db中的字段創建一個類,但是我不確定它們會是什麼,因爲db已經被填充並且字段可以隨機添加。這是我目前必須查詢的代碼。

var filter = new BsonDocument(); 
var result = collection.Find(filter).ToJson(); 

我不確定在聲明集合變量時是否更正確,但這是我所得到的。如果有人能幫助我達到我知道我是否連接到數據庫然後獲得成功查詢的地步,那麼我將非常感激。

+0

是否查詢工作對MongoDB的' '?你的'Command Object'看起來像什麼?在我看來,你還沒有發佈足夠的信息來回答你的問題。 – Brian

+0

所以我已經在我的mongo shell中運行了對數據庫的查詢並且它可以工作。 'db.webpage.find()'。我不確定你的意思是什麼我的'命令對象'看起來像。 – itsNino91

+0

這就是執行後變量結果是什麼,'{\「_ t \」:\「FindFluent'2 \」,\「Filter \」:{\「_ t \」:\「BsonDocumentFilterDefinition'1 \」}} ' – itsNino91

回答

1

玩弄來自全國各地我對面,似乎幫助here後傳來了互聯網多種方法之後。有人說加入你的連接字符串到Web.config文件爲:

<connectionStrings> 
    <add name="MongoSessionServices" connectionString="mongodb:/localhost:27017" /> 
    <add name="DefaultMongoConnection" connectionString="mongodb://localhost:27017" /> 
</connectionStrings> 
<appSettings> 
    <add key="MongoDbName" value="nutchdatabase"/> 
</appSettings> 

但是這並沒有奏效。

這是什麼工作:

public static MongoServer GetConnection() 
{ 
    //var cs = System.Configuration.ConfigurationManager.ConnectionStrings["DefaultMongoConnection"].ConnectionString; 
    MongoServerSettings settings = new MongoServerSettings(); 
    settings.Server = new MongoServerAddress("localhost", 27017); 
    MongoServer server = new MongoServer(settings); 
    return server; 
} 

public static MongoDatabase GetDatabase(string database = "") 
{ 
    if (string.IsNullOrEmpty(database)) 
    { 
    return GetConnection().GetDatabase(System.Configuration.ConfigurationManager.AppSettings.Get("MongoDbName")); 
    } 
    else 
    { 
    return GetConnection().GetDatabase(database); 
    } 
} 

我,但是仍然可以使用Web.config文件的數據庫名稱。

至於查詢去我想通了這一點爲好。這裏是我的解決辦法:

var db = GetDatabase(); 
var queryResults= db.GetCollection("webpage").FindAll().SetLimit(10000); 

,如果我想在我的數據庫是有200一個HTML響應代碼我的查詢將var q1 = Query.EQ("status", 200);所有的URL,那麼我的查詢傳遞給find()方法,像這樣var statusOk = db.GetCollection("webpage").Find(q1); 。然後您可以在foreach循環中迭代statusOk中的每個項目。

希望這有助於有人在他的未來。 (作爲參考,我使用Visual Studio 2013年,我在一個項目的WebForms寫這個,和我使用的MongoDB 2.6.9版本)當您直接運行