我正在尝试从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 :(得分: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>
然而,这并没有奏效。
这就是DID的工作原理:
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);
如果我希望我的数据库中我的查询的html响应代码为200的所有网址都是var q1 = Query.EQ("status", 200);
,那么我将查询传递给Find()方法,如此{{1} }。然后,您可以在foreach循环中迭代statusOk中的每个项目。
希望这有助于未来的某些人。 (作为参考我使用Visual Studio 2013,我在WebForms项目中写这个,我使用的是MongoDb的2.6.9版本)