mongdo通用類 C 版

2021-09-07 01:41:06 字數 1967 閱讀 8504

日前從公司離職,很快,還沒休息就步入了現在的公司,開始跟著公司的腳步走。

公司的專案基本都是大資料的,所以在資料庫上大部分都是使用mongodb和redis,基本都是nosql型的資料庫為主。以前自己學著做過mongodb和redis的demo,大體知道其怎麼去運用,只是沒有乙個規範化的封裝和運用,單純是學習。現在有實戰專案了,就激起了我前進學習的心,趁著今天自己查了下一些資料,學習了借鑑了一些前輩的方法後自己也封裝了乙個mongdb的底層通用類,這裡分享出來跟大家一起學習下。

目前mongodb提供的驅動主要有兩種:

兩個驅動的運用自己都有使用過,個人感覺官方的驅動提供的方法比較多,用起來也比較順手,而且更新度比samus的高,所以自己使用的是官方的驅動。

官網驅動的簡單使用

主要使用下面的兩個dll

mongodb.dll          驅動的主要程式

mongodb.gridfs.dll    用於儲存大檔案。

基本的增刪改查**如下:

封裝擴充套件使用

1.資料庫配置檔案

考慮到乙個專案裡面可能使用到不同的資料庫(比如:普通資料和檔案資料等分別存到不同資料庫中),也有可能會跨伺服器查詢,所以這裡首先建立乙個配置檔案幫助類,主要是可以進行多個資料庫配置,滿足跨伺服器,跨資料的需求。

配置格式如下:

<?xml version="1.0" encoding="utf-8" ?>

xml序列化物件類   

讀取配置檔案管理類

2.實體通用介面

mongodb中本身沒有自增id的屬性,自帶有乙個objectid,為了統一每個實體物件都有這個id ,這裡建立乙個通用介面和乙個底層實體基類來進行規範化處理

實體介面   

底層實體基類   

實體類的例子(繼承於basemodel類)     

3.mongodb通用幫助基類 (主要類)

4.業務類

當新建乙個表(mongodb裡面叫做集合),需要對其進行操作,包括一些業務處理時。首先繼承mongodbbase類,然後使用init方法初始化物件,如下面的userservcices類

5.使用

以上就是自己封裝的整體邏輯和**,不過這裡面還有一些不明白和不足的地方,這裡提出來,希望大神們幫我解答下:

1.返回值問題

在添,刪,改的使用,根據官網提供的驅動,都有乙個writeconcernresult物件返回,可是在測試中發現,這個返回的物件永遠都是null

2.增加id問題

mongodb中本身沒有自增id的屬性,自帶有乙個objectid,如果我需要乙個自增id,是否是自己建乙個id屬性,然後在增加的時候自己控制+1?不過這樣是否效能上比較低,還要考慮多執行緒併發的情況下加鎖的問題。所以不知道這塊大家是怎麼去實現的?

3.分頁效率的問題

一開始分頁我是先將結果轉為queryable,然後在進行操作,這個**裡面有這段,暫時注釋掉了,後面再上看到了乙個前輩的mongodb分析後,改了下分頁的方式,測試過很快,但在帶條件獲取記錄行總數的時候,發現測試300w資料下,獲取總數需要600ms的時間,不知道是我方法用錯了還是有其他更好的?

mongodb入門:

官網驅動介紹:

分頁優化參考:

C 通用輸出類

using system using system.collections.generic using system.linq using system.web using system.xml.serialization using xiaofeng using newtonsoft.json u...

C 通用類 日誌記錄類

using system using system.collections.generic using system.io using system.linq using system.text using system.threading.tasks using system.web namesp...

C 通用類 日誌記錄類

using system using system.collections.generic using system.io using system.linq using system.text using system.threading.tasks using system.web namesp...