Mongodb Connection String

时间:2024-10-25 20:17:45


看到这里心里狂喜,终于可以进行配置文件的设置了,但是发现c#的驱动并不支持这样的编写,于是又是一个失落。

 

链接原理:

 

链接数据库,官方提供了两种线程安全的方式,一个是MongoClient, 另一个是MongoServer,都是线程安全的,自动进行锁定的。

 

利用服务端类链接数据库

 

// Create server settings to passconnection string, timeout, etc.
MongoServerSettingssettings =newMongoServerSettings();
=
new MongoServerAddress("localhost",27017);
// Create server object tocommunicate with our server
MongoServer server = new MongoServer(settings);
// Get our databaseinstance to reach collections and data
var database = ("MessageDB");

 

客户端类链接数据库的实例

 

var client = new MongoClient("mongodb://localhost:27017");
var server = ();
var database = ("foo");
var collection = ("bar");

以上的两种链接方式我都做个测试。并且都可以用。这是一般更倾向于客户端的链接方式。

 

通过查找Api,发现客户端的类的构造方法还有其他的

 

  public MongoClient();
        public MongoClient(MongoClientSettingssettings);
        public MongoClient(MongoUrl url);
        public MongoClient(stringconnectionString);

我们通常用的是string字符串的链接,这次对MongoClientSettings进行的深度的查找调用发MongoClientSettings 是可以进行更多的参数设置的,和Option类似,于是找到了解决方案,通过配置文件对MongoClientSettings进行参数设置。

 

默认情况下,最大链接池是100,最小是0,数据库链接是本地的。下面我们看测试

 

 MongoClientSettings settingsclient = newMongoClientSettings();//实例化客户端设置类

 

红色划线部分是默认的参数,当我们不填写任何参数,驱动程序是进行默认的参数设置的。

通过客户端类的参数设置可以发现已经有所不同了。

 

 

那代码是如何编写的呢

 

#region 读取配置文件信息

            //获取链接池大小

            int connectionPool =Convert.ToInt32(["connectionPool"]);

            int minpool =Convert.ToInt32(["minpool"]);

            string hostname =["hostname"];

            Int32 port =Convert.ToInt32(["port"]);

            string database =["database"];
 

            #endregion
 

 if ((ConnectionString))

            {

                throw newArgumentNullException("Connection string not found.");

            }


   #region 客户端类设置


            MongoServerAddress ipaddress = newMongoServerAddress(hostname, port);//设置服务器的ip和端口


            MongoClientSettings settingsclient= new MongoClientSettings();//实例化客户端设置类


             =ipaddress;//端口赋值

            = connectionPool;

            = minpool;

             =0;//链接模式设置

           // MongoUrl url=newMongoUrl(ConnectionString);

            MongoClient client = newMongoClient(settingsclient);//调用客户端类构造函数设置参数


            MongoServer server =();//服务端获取客户端参数


            DB =(database);//获取数据库名称


            #endregion

 

刚开始我也是不知道如何进行参数赋值,只是在一步步的操作中发现参数是有类型的,一些类型是一些引用类,就需要实例化赋值。所以才有最后看起来很多的参数。

 

 

配置文件中的信息

<addkey="connectionPool" value="1000"/><!--连接池设置-->

    <add key="hostname"value="192.168.24.249"/>

    <add key="port"value="27017"/>

    <add key="database"value="DB3"/>

    <add key="minpool"value="300"/>

  </appSettings>

 

当然了客户端的方式写出来了。服务端也就容易的很多了

 

           

#region 服务端链接设置

            MongoServerSettings mongoSetting =new MongoServerSettings();

 

            // = newMongoServerAddress(ConnectionString, connectionPool);

 

            = connectionPool;//设定最大连接池

 

             = newMongoServerAddress(hostname, port);

 

            MongoServer server =(mongoSetting);//创建连接数据文件

 

            DB = (database);

            #endregion

 

 认识:


由于该数据库的参考资料比较少,所以多数资料还是外文,刚开始看到很是惊讶,如此多的英语能看的明白么。但是只要心境平静,一切都是可以的。通过基本的查找和一些外文论坛了解的基本的设置。很像SQL的设置,但是又不同,需要进行代码设置,这是这个代码的参数可以写在配置文件中。这次的资料查找我深刻认识到,英语是非常非常重要的工具,如果你想更深入的了解,英语是必不可少的利器。