gpt4 book ai didi

c# - 我是否仍应在我的连接字符串中指定 Mongo 的副本集?

转载 作者:行者123 更新时间:2023-12-04 10:41:24 24 4
gpt4 key购买 nike

我正在使用带有 C# mongo 驱动程序的 Mongo(2.10)

我已经设法通过副本集连接到它:

var dbClient = new MongoClient(
"mongodb://aaa:123@m.com:27017,m1.com:37017,m2.com:47017/dbtest?safe=true&connect=replicaset");

然后I read that I don't需要指明connect=replicaset 因为我有多个主机。
这与建议的相反here .

所以现在我的连接是:

"mongodb://aaa:123@m.com:27017,m1.com:37017,m2.com:47017/dbtest?safe=true"

——它有效。

但后来我读到了docs (和 also here ),并且根本没有 connect=replicaset 开关。

只有:replicaset=name 开关。

问题:

声明使用副本集的连接字符串(与 MongoClient C# 一起使用)的正确方法是什么?

最佳答案

随着时间的推移,MongoDB C# 驱动程序发生了很多变化。您的决定需要基于您使用的版本。

First link 2014年为perl驱动编写

SO link写于 2015 年(当时使用 ver 2.2)。在任何 various versions documentation 中都没有引用 connect=replicaset

Documentation这是我推荐使用的,因为它是由 Mongo 编写的。按照这些文档中的说明,我已经能够使用 MongoClient 和 MongoClient 设置(如下示例)。

示例

你可以像上面那样把你的 mongodb 写成一个长字符串:

"mongodb://aaa:123@m.com:27017,m1.com:37017,m2.com:27017/dbtest?replicaSet=myRepl"

推荐

我建议使用 native C# 变量连接到副本集,而不是像上面那样使用连接字符串。 ConnectionMode 在设置中指定是 ReplicaSet 还是 Direct

    var mongoClientSettings = new MongoClientSettings()
{
ConnectionMode = ConnectionMode.ReplicaSet,
Credential = MongoCredential.CreateCredential("admin", "user", "pass"),
ReplicaSetName = "ReplicaSetName",
Servers = new List<MongoServerAddress>() { new MongoServerAddress("host", 27017), new MongoServerAddress("host2", 27017) }.ToArray(),
ApplicationName = "NameOfYourApplicatino",
};

MongoClient client = new MongoClient(mongoClientSettings);

由于客户端是线程安全的,您也可以将其用作全局变量。

关于c# - 我是否仍应在我的连接字符串中指定 Mongo 的副本集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59910786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com