搜尋
首頁資料庫mysql教程MongodbConnectionString

本文档描述定义的URI格式之间,以及应用程序和MongoDB实例的连接,参考官方MongoDB的驱动。 原文 :http://docs.mongodb.org/manual/reference/connection-string/#connections-connection-options 标准连接字符串格式 本节描述的标准格式连接MongoDBURI用于

本文档描述定义的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的设置,但是又不同,需要进行代码设置,这是这个代码的参数可以写在配置文件中。这次的资料查找我深刻认识到,英语是非常非常重要的工具,如果你想更深入的了解,英语是必不可少的利器。

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
與其他RDBM相比,MySQL如何處理並發?與其他RDBM相比,MySQL如何處理並發?Apr 29, 2025 am 12:44 AM

MySQLhandlesconcurrencyusingamixofrow-levelandtable-levellocking,primarilythroughInnoDB'srow-levellocking.ComparedtootherRDBMS,MySQL'sapproachisefficientformanyusecasesbutmayfacechallengeswithdeadlocksandlacksadvancedfeatureslikePostgreSQL'sSerializa

MySQL與其他關係數據庫相比如何處理交易?MySQL與其他關係數據庫相比如何處理交易?Apr 29, 2025 am 12:37 AM

mySqlHandLestActionSefectefectionalytheinnodbengine,supportingAcidPropertiessimilartopostgresqlesqlandoracle.1)mySqluessRepeTableReadAbereadasTheDefaultIsolationLeleleteLevel,whatcanBeadJustEdToreDtoreDtoreDtoreadCommittedCommittenCommententCommittedForHigh-TrafficsCenarios.2)

MySQL中有哪些數據類型?MySQL中有哪些數據類型?Apr 29, 2025 am 12:28 AM

MySQL的數據類型分為數值、日期和時間、字符串、二進制和空間類型。選擇正確的類型可以優化數據庫性能和數據存儲。

在MySQL中編寫有效的SQL查詢的最佳實踐是什麼?在MySQL中編寫有效的SQL查詢的最佳實踐是什麼?Apr 29, 2025 am 12:24 AM

最佳實踐包括:1)理解數據結構和MySQL處理方式,2)適當索引,3)避免SELECT*,4)使用合適的JOIN類型,5)謹慎使用子查詢,6)使用EXPLAIN分析查詢,7)考慮查詢對服務器資源的影響,8)定期維護數據庫。這些做法能使MySQL查詢不僅快速,還具備可維護性、可擴展性和資源效率。

MySQL與PostgreSQL有何不同?MySQL與PostgreSQL有何不同?Apr 29, 2025 am 12:23 AM

MySQLisbetterforspeedandsimplicity,suitableforwebapplications;PostgreSQLexcelsincomplexdatascenarioswithrobustfeatures.MySQLisidealforquickprojectsandread-heavytasks,whilePostgreSQLispreferredforapplicationsrequiringstrictdataintegrityandadvancedSQLf

MySQL如何處理數據複製?MySQL如何處理數據複製?Apr 28, 2025 am 12:25 AM

MySQL通過異步、半同步和組複製三種模式處理數據複製。 1)異步複製性能高但可能丟失數據。 2)半同步複製提高數據安全性但增加延遲。 3)組複製支持多主複製和故障轉移,適用於高可用性需求。

您如何使用解釋性語句分析查詢性能?您如何使用解釋性語句分析查詢性能?Apr 28, 2025 am 12:24 AM

EXPLAIN語句可用於分析和提升SQL查詢性能。 1.執行EXPLAIN語句查看查詢計劃。 2.分析輸出結果,關注訪問類型、索引使用情況和JOIN順序。 3.根據分析結果,創建或調整索引,優化JOIN操作,避免全表掃描,以提升查詢效率。

您如何備份並還原MySQL數據庫?您如何備份並還原MySQL數據庫?Apr 28, 2025 am 12:23 AM

使用mysqldump進行邏輯備份和MySQLEnterpriseBackup進行熱備份是備份MySQL數據庫的有效方法。 1.使用mysqldump備份數據庫:mysqldump-uroot-pmydatabase>mydatabase_backup.sql。 2.使用MySQLEnterpriseBackup進行熱備份:mysqlbackup--user=root--password=password--backup-dir=/path/to/backupbackup。恢復時,使用相應的命

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。