C# 连接并查询现有的 MongoDb
C# connect and query an existing 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 进行操作,但似乎没有帮助。我查看的每个参考都涉及为数据库中的字段创建 class 但我不确定它们会是什么,因为数据库已经填充并且可以随机添加字段。这是我目前必须查询的代码。
var filter = new BsonDocument();
var result = collection.Find(filter).ToJson();
我不确定在声明集合变量时是否正确,但这就是我得到的全部内容。如果有人可以帮助我知道我是否已连接到数据库,然后进行成功的查询,我将不胜感激。
在试用了互联网上的众多方法后,我发现了一个 post 似乎对 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 的 url,我的查询将是 var q1 = Query.EQ("status", 200);
然后我会像这样将查询传递给 Find() 方法var statusOk = db.GetCollection("webpage").Find(q1);
。然后,您可以在 foreach 循环中迭代 statusOk 中的每个项目。
希望这对未来的人有所帮助。 (作为参考,我使用的是 Visual Studio 2013,我正在 WebForms 项目中编写此代码,并且我使用的是 MongoDb 的 2.6.9 版)
我正在尝试从 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 进行操作,但似乎没有帮助。我查看的每个参考都涉及为数据库中的字段创建 class 但我不确定它们会是什么,因为数据库已经填充并且可以随机添加字段。这是我目前必须查询的代码。
var filter = new BsonDocument();
var result = collection.Find(filter).ToJson();
我不确定在声明集合变量时是否正确,但这就是我得到的全部内容。如果有人可以帮助我知道我是否已连接到数据库,然后进行成功的查询,我将不胜感激。
在试用了互联网上的众多方法后,我发现了一个 post 似乎对 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 的 url,我的查询将是 var q1 = Query.EQ("status", 200);
然后我会像这样将查询传递给 Find() 方法var statusOk = db.GetCollection("webpage").Find(q1);
。然后,您可以在 foreach 循环中迭代 statusOk 中的每个项目。
希望这对未来的人有所帮助。 (作为参考,我使用的是 Visual Studio 2013,我正在 WebForms 项目中编写此代码,并且我使用的是 MongoDb 的 2.6.9 版)