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 版)