< 返回新闻公共列表
云南大王-C#操作MongoDB的帮助类
发布时间:2020-04-13 00:00:00
之前做项目,需要记录一些请求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
具体代码部分:
///
/// MongoDB帮助类
///
public class MongoDBHelper
{
///
/// 数据库连接字符串
///
private const string strconn = "mongodb://127.0.0.1:27017";
///
/// 数据库名称
///
private const string dbName = "pxdnet";
MongoServer server = new MongoClient(strconn).GetServer();
static MongoDatabase db;
///
/// 构造函数
///
public MongoDBHelper()
{
if(db == null)
{
db = server.GetDatabase(dbName);
}
}
///
/// 获取数据库
///
///
public static MongoDatabase GetDB()
{
return new MongoClient(strconn).GetServer().GetDatabase(dbName);
}
///
/// 新增
///
///
///
public static T Add
(T entity)
{
var col = GetDB().GetCollection(typeof(T).Name);
col.Insert(entity);
return entity;
}
///
/// 编辑
///
///
///
///
public static void Update(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));
}
///
/// 删除
/// remark:条件删除
///
///
///
public static void Delete(Dictionary dics)
{
var col = GetDB().GetCollection(typeof(T).Name);
var query = new QueryDocument(dics);
var result = col.Remove(query);
}
///
/// 删除
/// remark:根据ObjectId删除
///
///
///
public static void Delete(ObjectId id)
{
var col = GetDB().GetCollection(typeof(T).Name);
IMongoQuery query = Query.EQ("_id", id);
col.Remove(query);
}
///
/// 查询全部
///
///
///
public static List QueryList()
{
var col = GetDB().GetCollection(typeof(T).Name);
var result = col.FindAllAs();
return result.ToList();
}
///
/// 根据条件查询
///
///
///
///
public static List QueryList(Dictionary dics)
{
var col = GetDB().GetCollection(typeof(T).Name);
var query = new QueryDocument(dics);
var result = col.FindAs(query);
return result.ToList();
}
}
View Code
由于用到的功能不多,主要是插入和查询,偶尔记录下响应时间会用到更新操作,所以简单的封装了增删改查,如果需要更多其他操作的朋友,可以看下这篇帖子,介绍的挺全的。
https://www.cnblogs.com/cuihongyu3503319/p/9354209.html