我在多个环境中部署了相同的软件,有些使用 MongoDB 副本集,有些使用单个服务器。我使用某些更新操作WriteConcern.WMajority
,但如果服务器不是副本集的一部分,则会引发异常。
我正在寻找一种方法来询问服务器它是否是副本集的一部分,所以我会知道它是否可以安全使用WriteConcern.WMajority
。我的尝试是这样的:
string connStr = System.Configuration.ConfigurationManager
.ConnectionStrings["connStrName"].ConnectionString;
var server = new MongoDB.Driver.MongoClient(connStr).GetServer();
bool isReplicaSet = server.GetDatabase("admin")
.RunCommand("replSetGetStatus").Ok;
但这抛出MongoDB.Driver.MongoCommandException: Command 'replSetGetStatus' failed: not running with --replSet (response: { "ok" : 0.0, "errmsg" : "not running with --replSet" })
. 捕捉这个异常是我最好的选择吗?