C#操作MongoDB的帮助类-简单封装
程序员文章站
2022-06-22 08:41:47
之前做项目,需要记录一些请求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>(); } }
由于用到的功能不多,主要是插入和查询,偶尔记录下响应时间会用到更新操作,所以简单的封装了增删改查,如果需要更多其他操作的朋友,可以看下这篇帖子,介绍的挺全的。