C# 我是否仍应指定Mongo';在我的连接字符串中设置了什么?
我将Mongo与C#Mongo驱动程序(2.10)一起使用 我已通过以下方式通过副本集连接到它: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
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级别,而不是连接设置。