C#操作MongoDB的幫助類-簡單封裝


  之前做項目,需要記錄一些請求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

  

  具體代碼部分:

    /// <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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM