使用以前版本的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等......
答案 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
(甚至不问)。