当前位置: 移动技术网 > IT编程>开发语言>c# > C#操作MongoDB的帮助类-简单封装

C#操作MongoDB的帮助类-简单封装

2020年04月07日  | 移动技术网IT编程  | 我要评论
之前做项目,需要记录一些请求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

  

  具体代码部分:

    /// <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>();
        }
    }

 

  由于用到的功能不多,主要是插入和查询,偶尔记录下响应时间会用到更新操作,所以简单的封装了增删改查,如果需要更多其他操作的朋友,可以看下这篇帖子,介绍的挺全的。

  

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网