使用c#驱动程序2.2.3关闭mongoDb服务器

时间:2016-03-03 13:19:12

标签: c# mongodb mongodb-.net-driver

使用以前版本的C#驱动程序(1.x),我可以这样做:

var client = new MongoClient(settings);
var server = client.GetServer();
server.Shutdown();

如何使用驱动程序版本2.2.3执行此操作?

更新

我能找到的最好的东西是这样的:

try
{
    var client = new MongoClient(settings);
    var adminDatabase = client.GetDatabase("admin");
    var cmd = new BsonDocument("shutdown", 1);
    adminDatabase.RunCommand<BsonDocument>(cmd);
}
catch (MongoConnectionException e)
{
    if (!(e.InnerException is EndOfStreamException))
    {
        throw;
    }
}

但我真的不喜欢这个,Try / catch等......

2 个答案:

答案 0 :(得分:1)

他们在Google Groups Page告诉我,因为它绝不应该用于大多数应用程序。

Craig Wilson提到关闭只是一个可以使用

发送的命令
db.RunCommand("{shutdown: 1}")

因此,API .net版本2.0.0及更高版本中不再提供它。

答案 1 :(得分:0)

今天经过深入搜索后,这是我能找到的最好的。我正在使用MongoDB C#驱动程序2.2。我的mongod实例没有特殊凭据,它是所有默认设置。我想如果管理数据库有特殊的登录凭据,这段代码会有所改变。

// Connecting. 1 DB for actual usage, 1 for running the shutdown command
Client = new MongoClient("mongodb://127.0.0.1:27017");
Database = Client.GetDatabase(DBName);
AdminDatabase = Client.GetDatabase("admin");

// Shutting down the DB "cleanly"
AdminDatabase.RunCommandAsync<BsonDocument>(new JsonCommand<BsonDocument>("{shutdown: 1}"));

通过在命令提示符中观看mongod实例,我可以看出我的应用程序成功连接,写入,读取,然后使用dbexit: rc: 0关闭mongod实例,我可以告诉它意味着它正确关闭,我依稀记得在关闭时我看到dbexit: rc: 12(甚至不问)。