如何检查与mongodb的连接

Jac*_*ian 24 c# mongodb

我使用MongoDB驱动程序连接到数据库.当我的表单加载时,我想设置连接并检查它是否正常.我是这样做的:

var connectionString = "mongodb://localhost";
var client = new MongoClient(connectionString);
var server = client.GetServer();
var database = server.GetDatabase("reestr");
Run Code Online (Sandbox Code Playgroud)

但我不知道如何检查连接.我试图重复这段代码try-catch,但无济于事.即使我创建了一个不正确的connectionString,我仍然无法获得任何错误消息.

Pau*_*ter 34

要使用新的3.0驱动程序ping服务器:

var database = client.GetDatabase("YourDbHere");

database.RunCommandAsync((Command<BsonDocument>)"{ping:1}")
        .Wait();
Run Code Online (Sandbox Code Playgroud)

  • 从2.0开始,驱动程序仅为异步.对不起,但我的例子实际上是同步的,因为我正在调用`Wait()` (3认同)
  • 这是工作,但这个实现的问题是它需要数据库名称,我希望获得类似于 Mongo 连接字符串的 IsAlive 方法(也可以是副本集)的东西,而不需要获取数据库名称 (2认同)

mne*_*syn 21

有一个ping方法:

var connectionString = "mongodb://localhost";
var client = new MongoClient(connectionString);
var server = client.GetServer();
server.Ping();
Run Code Online (Sandbox Code Playgroud)

  • 你会如何应对新的Mongo DB C#2.0驱动程序? (18认同)
  • 是的,知道如何检查新3.0驱动程序的连接状态?它没有服务器对象. (4认同)

Pav*_* K. 17

2.4.3的完整示例 - 其中"client.GetServer()"不可用.基于"保罗凯斯特"的回答.

client = new MongoClient("mongodb://localhost");
database = client.GetDatabase(mongoDbStr);
bool isMongoLive = database.RunCommandAsync((Command<BsonDocument>)"{ping:1}").Wait(1000);

if(isMongoLive)
{
    // connected
}
else
{
    // couldn't connect
}
Run Code Online (Sandbox Code Playgroud)

  • 保罗的回答并不清楚你对这个请求做了什么.他指出了正确的方向,但没有完全回答这个问题. (4认同)