最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

c#鏈接mongDB集群實(shí)戰(zhàn)開發(fā)3

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-09 15:07:03
文檔

c#鏈接mongDB集群實(shí)戰(zhàn)開發(fā)3

c#鏈接mongDB集群實(shí)戰(zhàn)開發(fā)3:c# 鏈接mongDB集群 一 了解mongdb 二 部署集群 三 C#鏈接mongdb 完成測試 C#鏈接mongdb 完成測試 此章節(jié)繼續(xù)我們上一章節(jié)將的我們開始用程序去鏈接mondbdb,大家都知道我們鏈接sqlserver其實(shí)用的是微軟自己寫的驅(qū)動。它已經(jīng)封裝了一些對象,要我們?nèi)ユ溄?。?/div>
推薦度:
導(dǎo)讀c#鏈接mongDB集群實(shí)戰(zhàn)開發(fā)3:c# 鏈接mongDB集群 一 了解mongdb 二 部署集群 三 C#鏈接mongdb 完成測試 C#鏈接mongdb 完成測試 此章節(jié)繼續(xù)我們上一章節(jié)將的我們開始用程序去鏈接mondbdb,大家都知道我們鏈接sqlserver其實(shí)用的是微軟自己寫的驅(qū)動。它已經(jīng)封裝了一些對象,要我們?nèi)ユ溄?。?/div>

c# 鏈接mongDB集群 一 了解mongdb 二 部署集群 三 C#鏈接mongdb 完成測試 C#鏈接mongdb 完成測試 此章節(jié)繼續(xù)我們上一章節(jié)將的我們開始用程序去鏈接mondbdb,大家都知道我們鏈接sqlserver其實(shí)用的是微軟自己寫的驅(qū)動。它已經(jīng)封裝了一些對象,要我們?nèi)ユ溄印5?/p>

c# 鏈接mongDB集群

一 了解mongdb

二 部署集群

三 C#鏈接mongdb 完成測試

C#鏈接mongdb 完成測試

此章節(jié)繼續(xù)我們上一章節(jié)將的我們開始用程序去鏈接mondbdb,大家都知道我們鏈接sqlserver其實(shí)用的是微軟自己寫的驅(qū)動。它已經(jīng)封裝了一些對象,要我們?nèi)ユ溄?。但是我們鏈接mondbdb 同樣需要一些對象,這個mongdb官網(wǎng)有說明,可以自己去看看或者直接下載我的這里下載 或者在第一章節(jié)有些伙伴們已經(jīng)下載好了

開發(fā)驅(qū)動文件夾 在 mongo-csharp-driver-master\mongo-csharp-driver-master\src SRC下面看到驅(qū)動項(xiàng)目這里注意,我下載是vs2012的項(xiàng)目,同學(xué)們可以根據(jù)自己的需要替換net framework 版本

打開項(xiàng)目之后看到 如圖所示

\

編譯項(xiàng)目得到

MongoDB.Bson.dll

MongoDB.Driver.dll

創(chuàng)建項(xiàng)目,項(xiàng)目配置文件如下



  
 
 
 
 
 
 
 
 
 
 
 
 

LogLevel 為自定義 日記級別 ,這個后面看我的代碼

LogPath 為日志路徑

MongReplicaSetName 為副本集名稱,其實(shí)就是建立集群的時候取的名字。

MongoServerAddress 為集群機(jī)器ip列表,我這里是自己的機(jī)器開了不同的端口來區(qū)別,你可以改成局域網(wǎng)ip

TimeOut 超時時間,默認(rèn)貌似是3秒,我這里設(shè)置60秒方便調(diào)試

鏈接集群主要代碼

 /// 
 /// 取得數(shù)據(jù)庫連接字符串
 /// 
 /// App.Config文件中AppSettings節(jié)中 AppSettings 對應(yīng)的name
 /// 數(shù)據(jù)庫連接字符串
 private static MongoServer GetConnStr()
 {
 List servers = new List();
 string reg = @"^(?'server'\d{1,}.\d{1,}.\d{1,}.\d{1,}):(?'port'\d{1,})$";
 string[] ServerList = ConfigurationManager.AppSettings["MongoServerAddress"].Trim().Split('|');
 foreach (string server in ServerList)
 {
 MatchCollection mc = Regex.Matches(server, reg);
 if (mc != null && mc.Count > 0)
 servers.Add(new MongoServerAddress(mc[0].Groups["server"].ToString(), Convert.ToInt32(mc[0].Groups["port"].ToString())));
 }

 if (servers == null || servers.Count < 1)
 return null;

 MongoClientSettings set = new MongoClientSettings();

 set.Servers = servers;

 set.ReplicaSetName = ConfigurationManager.AppSettings["MongReplicaSetName"].Trim();//設(shè)置副本集名稱

 int TimeOut =ConvertUtil.ParseInt(ConfigurationManager.AppSettings["TimeOut"].Trim());//設(shè)置副本集名稱

 set.ConnectTimeout = new TimeSpan(0, 0, 0, TimeOut, 0);//設(shè)置超時時間為5秒

 set.ReadPreference = new ReadPreference(ReadPreferenceMode.SecondaryPreferred);

 MongoClient client = new MongoClient(set);

 return client.GetServer();
 }
set.ReadPreference = new ReadPreference(ReadPreferenceMode.SecondaryPreferred); 這句代碼可以根據(jù)自己需要修改。

其他沒有什么注意的地方

數(shù)據(jù)插入mongdb代碼

 /// 
 /// MongDB 批量insert語句
 /// 
 /// 對象類型
 /// 數(shù)據(jù)庫名稱
 /// 表名稱
 /// 對象
 /// 返回錯誤
 /// 
 public static IEnumerable Execute(string _databaseName, string _collectionName, IEnumerable entitys, out string errorMsg)
 {
 errorMsg = string.Empty;
 //取得數(shù)據(jù)庫連接
 IEnumerable result = null;

 try
 {
 if (null == entitys)
 return null;
 //獲取連接的服務(wù)器集群
 _server = GetConnStr();

 //獲取數(shù)據(jù)庫或者創(chuàng)建數(shù)據(jù)庫(不存在的話)。
 MongoDatabase database = _server.GetDatabase(_databaseName);

 using (_server.RequestStart(database))//開始連接數(shù)據(jù)庫。
 {
 MongoCollection myCollection = database.GetCollection(_collectionName);
 result = myCollection.InsertBatch(entitys);
 }
 }
 catch (Exception ex)
 {
 errorMsg = ex.ToString();
 }
 finally
 {
 }

 //記錄日志
 if (!string.IsNullOrEmpty(errorMsg))
 {
 LogUtil.Error("CommonLib.DbAccess.MongDBAccess", "Execute", errorMsg + "\n\r\t");
 }

 return result;
 }

讀取mongdb數(shù)據(jù)代碼

/// 
 /// 如果不清楚具體的數(shù)量,一般不要用這個函數(shù)。
 /// 
 /// 
 /// 
 /// 
 public static List GetAll(string _databaseName, string collectionName,out string errorMsg)
 {
 errorMsg = string.Empty;
 List result = new List();
 try
 {
 //獲取連接的服務(wù)器集群
 _server = GetConnStr();

 //獲取數(shù)據(jù)庫或者創(chuàng)建數(shù)據(jù)庫(不存在的話)。
 MongoDatabase database = _server.GetDatabase(_databaseName);
 
 using (_server.RequestStart(database))//開始連接數(shù)據(jù)庫。
 {
 MongoCollection myCollection = database.GetCollection(collectionName);
 result.AddRange(myCollection.FindAll());
 }
 }
 catch (Exception ex )
 {
 errorMsg = ex.ToString();
 }
 //記錄日志
 if (!string.IsNullOrEmpty(errorMsg))
 {
 LogUtil.Error("CommonLib.DbAccess.MongDBAccess", "GetAll", errorMsg + "\n\r\t");
 }
 return result;
 } 

以上是插入和讀取代碼。

后面運(yùn)行效果如下

\

我這里插入了10w條數(shù)據(jù) 人然后讀取10w條數(shù)據(jù)。效率比sqlserver是快很多。

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

c#鏈接mongDB集群實(shí)戰(zhàn)開發(fā)3

c#鏈接mongDB集群實(shí)戰(zhàn)開發(fā)3:c# 鏈接mongDB集群 一 了解mongdb 二 部署集群 三 C#鏈接mongdb 完成測試 C#鏈接mongdb 完成測試 此章節(jié)繼續(xù)我們上一章節(jié)將的我們開始用程序去鏈接mondbdb,大家都知道我們鏈接sqlserver其實(shí)用的是微軟自己寫的驅(qū)動。它已經(jīng)封裝了一些對象,要我們?nèi)ユ溄印5?/div>
推薦度:
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

Top