Mongodb Connection String

來源:互聯網
上載者:User

本文檔描述定義的URI格式之間,以及應用程式和MongoDB執行個體的串連,參考官方MongoDB的驅動。


原文  :http://docs.mongodb.org/manual/reference/connection-string/#connections-connection-options


標準連接字串格式

本節描述的標準格式串連MongoDBURI用於串連MongoDB資料庫伺服器。所有官方MongoDB的格式都是相同的驅動程式。對於驅動和驅動的連結文檔的列表,看到MongoDB驅動和用戶端庫(MongoDB Drivers and Client Libraries)


以下是標準的連結方式


mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

參數說明:


mongodb://字串連結的標準格式


username:password@

可選的,一般預設是沒有名稱和密碼的,只有在MongoDB伺服器使用了身分識別驗證時才出現。


/database

可選的,如果連結的字串中包含了驗證身份的使用者名稱和密碼,則資料庫是必須要有的。若沒有包含資料庫名稱,預設是連結admin的資料庫


?options

連結特定選項。如果沒有指定連結特定的資料庫名稱,必須在主機名稱後面加"/",並且在optin的前面以問號形式開頭"?".

 

執行個體:

mongodb://db1.example.net,db2.example.net:2500/?replicaSet=test

  

   繼續尋找發現了另一篇文章。只做重點翻譯:


內部認證

當你只需要一個使用者,它在連接字串中指定這是可能的。


var connectionString ="mongodb://user1:password1@localhost/test";var mongoClient = newMongoClient(connectionString); 注意: 如果你不指定一個資料庫連接字串,預設的資料庫是“admin”資料庫.


看到這裡心裡狂喜,終於可以進行設定檔的設定了,但是發現c#的驅動並不支援這樣的編寫,於是又是一個失落。

 

連結原理:

 

連結資料庫,官方提供了兩種安全執行緒的方式,一個是MongoClient, 另一個是MongoServer,都是安全執行緒的,自動進行鎖定的。

 

利用服務端類連結資料庫

 

// Create server settings to passconnection string, timeout, etc.
MongoServerSettingssettings =newMongoServerSettings();
settings.Server = 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 = server.GetDatabase("MessageDB");

 

用戶端類連結資料庫的執行個體

 

var client = new MongoClient("mongodb://localhost:27017");var server = client.GetServer();var database = server.GetDatabase("foo");var collection = database.GetCollection("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(ConfigurationManager.AppSettings["connectionPool"]);            int minpool =Convert.ToInt32(ConfigurationManager.AppSettings["minpool"]);            string hostname =ConfigurationManager.AppSettings["hostname"];            Int32 port =Convert.ToInt32(ConfigurationManager.AppSettings["port"]);            string database =ConfigurationManager.AppSettings["database"];             #endregion  if (String.IsNullOrEmpty(ConnectionString))            {                throw newArgumentNullException("Connection string not found.");            }   #region 用戶端類設定            MongoServerAddress ipaddress = newMongoServerAddress(hostname, port);//設定伺服器的ip和連接埠            MongoClientSettings settingsclient= new MongoClientSettings();//執行個體化用戶端設定類            settingsclient.Server =ipaddress;//連接埠賦值           settingsclient.MaxConnectionPoolSize = connectionPool;           settingsclient.MinConnectionPoolSize = minpool;            settingsclient.ConnectionMode =0;//連結模式設定           // MongoUrl url=newMongoUrl(ConnectionString);            MongoClient client = newMongoClient(settingsclient);//調用用戶端類建構函式設定參數            MongoServer server =client.GetServer();//服務端擷取用戶端參數            DB =server.GetDatabase(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();             //mongoSetting.Server = newMongoServerAddress(ConnectionString, connectionPool);             mongoSetting.MaxConnectionPoolSize= connectionPool;//設定最大串連池             mongoSetting.Server = newMongoServerAddress(hostname, port);             MongoServer server =MongoServer.Create(mongoSetting);//建立串連資料檔案             DB = server.GetDatabase(database);            #endregion 

 認識:


由於該資料庫的參考資料比較少,所以多數資料還是外文,剛開始看到很是驚訝,如此多的英語能看的明白麼。但是只要心境平靜,一切都是可以的。通過基本的尋找和一些外文論壇瞭解的基本的設定。很像SQL的設定,但是又不同,需要進行代碼設定,這是這個代碼的參數可以寫在設定檔中。這次的資料尋找我深刻認識到,英語是非常非常重要的工具,如果你想更深入的瞭解,英語是必不可少的利器。

 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.