欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

.Net中使用MongoDB的方法是什么-創(chuàng)新互聯(lián)

這篇文章將為大家詳細講解有關(guān).Net中使用MongoDB的方法是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

寧波ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

什么是MongoDB

MongoDB是基于文檔的存儲的(而非表),是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。他支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bson格式,因此可以存儲比較復(fù)雜的數(shù)據(jù)類型。Mongo大的特點是他支持的查詢語言非常強大,其語法有點類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引。Mongo主要解決的是海量數(shù)據(jù)的訪問效率問題。因為Mongo主要是支持海量數(shù)據(jù)存儲的,所以Mongo還自帶了一個出色的分布式文件系統(tǒng)GridFS,可以支持海量的數(shù)據(jù)存儲。由于Mongo可以支持復(fù)雜的數(shù)據(jù)結(jié)構(gòu),而且?guī)в袕姶蟮臄?shù)據(jù)查詢功能,因此非常受到歡迎。

BSON是MongoDB的數(shù)據(jù)存儲格式。大家對于JSON比較熟悉,但是什么是BSON呢BSON基于JSON格式,選擇JSON進行改造的原因主要是JSON的通用性及JSON的schemaless的特性。

BSON具有如下特點

1.更快的遍歷速度

  對JSON格式來說,太大的JSON結(jié)構(gòu)會導致數(shù)據(jù)遍歷非常慢。在JSON中,要跳過一個文檔進行數(shù)據(jù)讀取,需要對此文檔進行掃描才行,需要進行麻煩數(shù)據(jù)結(jié)構(gòu)匹配,比如括號的匹配,而BSON對JSON的一大改進就是,它會將JSON的每一個元素的長度存在元素的頭部,這樣你只需要讀取到元素長度就能直接seek到指定的點上進行讀取了。

2.操作更簡易

  對JSON來說,數(shù)據(jù)存儲是無類型的,比如你要修改基本一個值,從9到10,由于從一個字符變成了兩個,所以可能其后面的所有內(nèi)容都需要往后移一位才可以。而使用BSON,你可以指定這個列為數(shù)字列,那么無論數(shù)字從9長到10還是100,我們都只是在存儲數(shù)字的那一位上進行修改,不會導致數(shù)據(jù)總長變大。當然,在MongoDB中,如果數(shù)字從整形增大到長整型,還是會導致數(shù)據(jù)總長變大的。

3.增加了額外的數(shù)據(jù)類型

  JSON是一個很方便的數(shù)據(jù)交換格式,但是其類型比較有限。BSON在其基礎(chǔ)上增加了“byte array”數(shù)據(jù)類型。這使得二進制的存儲不再需要先base64轉(zhuǎn)換后再存成JSON。大大減少了計算開銷和數(shù)據(jù)大小。當然,在有的時候,BSON相對JSON來說也并沒有空間上的優(yōu)勢,因為有了類型概念。

MongoDB windows下 安裝

MongoDB的安裝很簡單,設(shè)置好安裝路徑后,一直Next直到安裝結(jié)束,大的坑就是MongoDB服務(wù)的安裝,下面具體說下MongoDB安裝之后的一些配置操作

1.在根目錄下創(chuàng)建數(shù)據(jù)庫路徑(data目錄)、日志路徑(logs目錄)、日志文件(mongo.log文件)、配置路徑(conf目錄)我的安裝路徑是:D:\Program Files\mongodb

2.在conf目錄下創(chuàng)建配置文件mongo.conf,文件內(nèi)容如下:

logpath=D:\Program Files\mongodb\logs\mongodb.log #日志輸出文件路徑

logappend=true #錯誤日志采用追加模式,配置這個選項后mongodb的日志會追加到現(xiàn)有的日志文件,而不是從新創(chuàng)建一個新文件

journal=true #啟用日志文件,默認啟用

quiet=true #這個選項可以過濾掉一些無用的日志信息,若需要調(diào)試使用請設(shè)置為false

port=27017 #端口號 默認為27017

auth=true #啟用驗證 需要用戶名密碼

配置完成以上2個步驟 就可以 啟動MongoDB了

運行CMD 輸入命令 (注意 mongod的路徑)

mongod --config " D:\Program Files\mongodb\data \conf\mongo.conf"

3.創(chuàng)建并啟動MongoDB服務(wù)

如果每次都按照步驟三那樣操作,豈不是相當麻煩,按照如下命令來創(chuàng)建并啟動MongoDB服務(wù),就可以通過windows服務(wù)來管理MongoDB的啟動和關(guān)閉了

mongod --config " D:\Program Files\mongodb\data \conf\mongo.conf" --install --serviceName "MongoDB"

net start MongoDB

測試是否成功 可以在 瀏覽器中輸入http://localhost:27017/如果出現(xiàn)下圖表示服務(wù)安裝成功

.Net中使用MongoDB的方法是什么

如果需要卸載MongoDB服務(wù) 在CMD 中運行

mongod.exe --remove --serviceName "MongoDB"

前期準備工作完成了,就可以開始擼代碼了

如何在.net 中使用MongoDB

首先在項目中引入 MongoDB.Bson.dll,MongoDB.Driver.dll,MongoDB.Driver.Core.dll 我使用的是2.0版本的 現(xiàn)在好多文章都是介紹使用1+版本的 這也是我寫此文的目的引入驅(qū)動DLL后,就可以開始擼代碼了

部分代碼如下

private static MongoClient client;

private static IMongoDatabase database;

//本地配置

private const string MongoDBConnectionStr = "mongodb://localhost";

//數(shù)據(jù)庫名稱

private static string DefaultDataBaseName = "Test";

 

 

public MongoDBHelper()

{

 GetConnection(DefaultDataBaseName);

}

 

/// <summary>

/// 構(gòu)造函數(shù) 指定數(shù)據(jù)庫

/// </summary>

/// <param name="dataBaseName"></param>

public MongoDBHelper(string dataBaseName)

{

 GetConnection(dataBaseName);

}

 

private static void GetConnection(string dataBaseName)

{

 client = new MongoClient(MongoDBConnectionStr);

 database = client.GetDatabase(dataBaseName);

}

 

/// <summary>

/// 異步插入一條數(shù)據(jù),手動輸入collection name

/// </summary>

public Task InsertAsync<T>(string collectionName, T obj)

{

 if (database == null)

 {

  throw new Exception("沒有指定數(shù)據(jù)庫");

 }

 var collection = database.GetCollection<T>(collectionName);

 return collection.InsertOneAsync(obj);

}

 

/// <summary>

/// 異步插入一條數(shù)據(jù),采用類型T的完全限定名作為collection name

/// </summary>

public Task InsertAsync<T>(T obj)

{

 return InsertAsync(typeof(T).FullName, obj);

}

 

/// <summary>

/// 異步插入多條數(shù)據(jù),手動輸入collection name

/// </summary>

public Task BatchInsertAsync<T>(string collectionName, IEnumerable<T> objs)

{

 if (database == null)

 {

  throw new Exception("沒有指定數(shù)據(jù)庫");

 }

 if (objs == null)

 {

  throw new ArgumentException();

 }

 var collection = database.GetCollection<T>(collectionName);

 return collection.InsertManyAsync(objs);

}

 

/// <summary>

/// 異步插入多條數(shù)據(jù),采用類型T的完全限定名作為collection name

/// </summary>

public Task BatchInsertAsync<T>(IEnumerable<T> objs)

{

 return BatchInsertAsync(typeof(T).FullName, objs);

}

 

/// <summary>

/// 插入一條數(shù)據(jù)

/// </summary>

public void Insert<T>(T obj)

{

 InsertAsync(obj).Wait();

}

 

/// <summary>

/// 插入多條數(shù)據(jù)

/// </summary>

public void Insert<T>(IEnumerable<T> objs)

{

 BatchInsertAsync(objs).Wait();

}

 

/// <summary>

/// MongoDB C# Driver的Find方法,返回IFindFluent。手動輸入collection name

/// </summary>

public IFindFluent<T, T> Find<T>(string collectionName, FilterDefinition<T> filter, FindOptions options = null)

{

 if (database == null)

 {

  throw new Exception("沒有指定數(shù)據(jù)庫");

 }

 var collection = database.GetCollection<T>(collectionName);

 return collection.Find(filter, options);

}

 

/// <summary>

/// MongoDB C# Driver的Find方法,返回IFindFluent。采用類型T的完全限定名作為collection name

/// </summary>

public IFindFluent<T, T> Find<T>(FilterDefinition<T> filter, FindOptions options = null)

{

 return Find(typeof(T).FullName, filter, options);

}

 

/// <summary>

/// 取符合條件的數(shù)據(jù) sort中多個排序條件逗號分隔,默認asc

/// </summary>

public List<T> Get<T>(Expression<Func<T, bool>> condition, int skip, int limit, string sort)

{

 return Get(new List<Expression<Func<T, bool>>> { condition }, skip, limit, sort);

}

 

public List<T> Get<T>(Expression<Func<T, bool>> condition)

{

 return Get(condition, 0, 0, null);

}

 

/// <summary>

/// 取符合條件的數(shù)據(jù) sort中多個排序條件逗號分隔,默認asc

/// </summary>

public List<T> Get<T>(List<Expression<Func<T, bool>>> conditions, int skip, int limit, string sort)

{

 if (conditions == null || conditions.Count == 0)

 {

  conditions = new List<Expression<Func<T, bool>>> { x => true };

 }

 var builder = Builders<T>.Filter;

 var filter = builder.And(conditions.Select(x => builder.Where(x)));

 

 var ret = new List<T>();

 try

 {

  List<SortDefinition<T>> sortDefList = new List<SortDefinition<T>>();

  if (sort != null)

  {

   var sortList = sort.Split(',');

   for (var i = 0; i < sortList.Length; i++)

   {

    var sl = Regex.Replace(sortList[i].Trim(), @"\s+", " ").Split(' ');

    if (sl.Length == 1 || (sl.Length >= 2 && sl[1].ToLower() == "asc"))

    {

     sortDefList.Add(Builders<T>.Sort.Ascending(sl[0]));

    }

    else if (sl.Length >= 2 && sl[1].ToLower() == "desc")

    {

     sortDefList.Add(Builders<T>.Sort.Descending(sl[0]));

    }

   }

  }

  var sortDef = Builders<T>.Sort.Combine(sortDefList);

  ret = Find(filter).Sort(sortDef).Skip(skip).Limit(limit).ToListAsync().Result;

 }

 catch (Exception e)

 {

  //異常處理

 }

 return ret;

}

 

public List<T> Get<T>(List<Expression<Func<T, bool>>> conditions)

{

 return Get(conditions, 0, 0, null);

}

示例代碼中只實現(xiàn)了插入和查詢功能,后續(xù)會將完整代碼上傳

關(guān)于.Net中使用MongoDB的方法是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

當前標題:.Net中使用MongoDB的方法是什么-創(chuàng)新互聯(lián)
本文來源:http://aaarwkj.com/article0/csosoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、網(wǎng)站設(shè)計公司、營銷型網(wǎng)站建設(shè)、網(wǎng)站設(shè)計App開發(fā)、虛擬主機

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
欧美日韩电影一区二区三区| 亚洲国产精品福利在线| 亚洲精品国产精品乱码不卞| 久久一二三四区中文字幕| 丰满少妇一区二区自拍区| 少妇高潮惨叫久久麻豆传| 欧美亚洲国产另类第一页| 日本高清久久一区二区三区| 风间由美亚洲一区二区三区| 人妻av天堂综合一区| 一区二区亚洲欧美精品| 黄色片在线观看中文字幕| 黄片超刺激在线看在线| 黄色大全欧美在线观看| 四虎永久播放地址免费| 91香蕉国产精品日韩| 亚洲一区欧美二区日韩三区| 亚洲国内精品一区二区在线| 视频在线观看亚洲午夜福利| 国产黄色片子在线观看| 欧美激情性国产精品潮| 欧美午夜视频一区二区福利| 97视频高清在线观看| 尤物视频在线观看一下| 日韩黄色一级片免费看| 亚洲国产熟女一区二区三| 成人高清在线观看91| 中文字幕乱码在线观看一区| 海角社区av在线播放| 亚洲综合中文字幕久久网址| 大胸妇女引诱老师在线观看| 国产日韩欧美 一区二区三区| 在线观看91精品国产秒播| 日韩色图在线观看视频| 日韩精品人妻一区二区三区免费| 亚洲一区二区三区日韩精品| 日韩在线一区中文字幕| 色一区欧美一区亚洲一区| 中文字幕一区二区三区网站| 中文字幕日韩有码在线| 国产精品精品国产一区二区|