C# 我是否仍应指定Mongo';在我的连接字符串中设置了什么?

C# 我是否仍应指定Mongo';在我的连接字符串中设置了什么?,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,我将Mongo与C#Mongo驱动程序(2.10)一起使用 我已通过以下方式通过副本集连接到它: var dbClient = new MongoClient( "mongodb://aaa:123@m.com:27017,m1.com:37017,m2.com:47017/dbtest?safe=true&connect=replicaset"); 但随后需要指示connect=replicaset,因为我有多个主机。 这与所建议的正好相反 现在我的联系是: "mongodb://a

我将Mongo与C#Mongo驱动程序(2.10)一起使用

我已通过以下方式通过副本集连接到它:

var dbClient = new MongoClient(
"mongodb://aaa:123@m.com:27017,m1.com:37017,m2.com:47017/dbtest?safe=true&connect=replicaset");
但随后需要指示
connect=replicaset
,因为我有多个主机。
这与所建议的正好相反

现在我的联系是:

"mongodb://aaa:123@m.com:27017,m1.com:37017,m2.com:47017/dbtest?safe=true"
-它起作用了

但是我读了(and),根本没有
connect=replicaset
开关

所有这些都是:
replicaset=name
开关

问题:


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

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

2014年为perl驱动程序编写

写于2015年(当时正在使用2.2版)。在任何

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

示例

您可以像上面那样用长字符串编写mongodb:

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

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

    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);
var mongoClientSettings=new mongoClientSettings()
{
ConnectionMode=ConnectionMode.ReplicaSet,
Credential=MongoCredential.CreateCredential(“管理员”、“用户”、“通过”),
ReplicaSetName=“ReplicaSetName”,
Servers=new List(){new mongoserver地址(“主机”,27017),new mongoserver地址(“主机2”,27017)}.ToArray(),
ApplicationName=“NameOfYourApplicationNo”,
};
MongoClient=新的MongoClient(MongoClient设置);

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

顺便说一句,请参阅
”mongodb://aaa:123@m、 com:27017,m1.com:37017,m2.com:27017/dbtest?replicset=myRepl“
,我如何知道哪个是主要的还是次要的?因为当我声明它们时,我没有指定哪个是哪个,我只是让你通常定义副本集中的所有服务器,当mongo客户端连接时,它获取主服务器并连接到该服务器。主要次要设置在mongodb级别,而不是连接设置。