之前做項目,需要記錄一些請求URL,響應時間,異常日誌,變更日誌等信息,項目本身用的是Sql Server,考慮到這些信息增長速度快,占用空間大,且平時除了統計下網站信息,查看下日誌,並不會進行關聯查詢和操作,所以決定這些信息不配錄入我的主庫,當時百度上看了看,發現MongoDB不錯,所以用了2個小 ...
之前做項目,需要記錄一些請求URL,響應時間,異常日誌,變更日誌等信息,項目本身用的是Sql Server,考慮到這些信息增長速度快,占用空間大,且平時除了統計下網站信息,查看下日誌,並不會進行關聯查詢和操作,所以決定這些信息不配錄入我的主庫,當時百度上看了看,發現MongoDB不錯,所以用了2個小時研究了下,就寫入項目中了。。。
好了,不多說,直接把DLL和代碼記下來,以便以後直接使用。
C#版的MongoDB驅動是用官方提供的mongo-csharp-driver
具體下載地址:http://github.com/mongodb/mongo-csharp-driver/downloads
引用:MongoDB.Driver.dll,MongoDB.Bson.dll
具體代碼部分:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
/// <summary> /// MongoDB幫助類 /// </summary> public class MongoDBHelper { /// <summary> /// 資料庫連接字元串 /// </summary> private const string strconn = "mongodb://127.0.0.1:27017"; /// <summary> /// 資料庫名稱 /// </summary> private const string dbName = "pxdnet"; MongoServer server = new MongoClient(strconn).GetServer(); static MongoDatabase db; /// <summary> /// 構造函數 /// </summary> public MongoDBHelper() { if(db == null) { db = server.GetDatabase(dbName); } } /// <summary> /// 獲取資料庫 /// </summary> /// <returns></returns> public static MongoDatabase GetDB() { return new MongoClient(strconn).GetServer().GetDatabase(dbName); } /// <summary> /// 新增 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="entity"></param> public static T Add<T>(T entity) { var col = GetDB().GetCollection(typeof(T).Name); col.Insert<T>(entity); return entity; } /// <summary> /// 編輯 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="entity"></param> /// <param name="id"></param> public static void Update<T>(T entity, ObjectId id) { var col = GetDB().GetCollection(typeof(T).Name); BsonDocument bsd = BsonExtensionMethods.ToBsonDocument(entity); IMongoQuery query = Query.EQ("_id", id); col.Update(query, new UpdateDocument(bsd)); } /// <summary> /// 刪除 /// remark:條件刪除 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="dics"></param> public static void Delete<T>(Dictionary<string, object> dics) { var col = GetDB().GetCollection(typeof(T).Name); var query = new QueryDocument(dics); var result = col.Remove(query); } /// <summary> /// 刪除 /// remark:根據ObjectId刪除 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="id"></param> public static void Delete<T>(ObjectId id) { var col = GetDB().GetCollection(typeof(T).Name); IMongoQuery query = Query.EQ("_id", id); col.Remove(query); } /// <summary> /// 查詢全部 /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public static List<T> QueryList<T>() { var col = GetDB().GetCollection(typeof(T).Name); var result = col.FindAllAs<T>(); return result.ToList<T>(); } /// <summary> /// 根據條件查詢 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="dics"></param> /// <returns></returns> public static List<T> QueryList<T>(Dictionary<string,object> dics) { var col = GetDB().GetCollection(typeof(T).Name); var query = new QueryDocument(dics); var result = col.FindAs<T>(query); return result.ToList<T>(); } }View Code
由於用到的功能不多,主要是插入和查詢,偶爾記錄下響應時間會用到更新操作,所以簡單的封裝了增刪改查,如果需要更多其他操作的朋友,可以看下這篇帖子,介紹的挺全的。
https://www.cnblogs.com/cuihongyu3503319/p/9354209.html