一、前言
最近项目中要用到MongoDB,因此实现做了不少的调研。发现网上很多现有关于MongoDB C#官方驱动的调用方法都是基于1.8版本的,已经不是用了最新的2.2版本。因此我在基于C#官方驱动2.2的基础上,对MongoDB的调用方法做了一些封装,以便于调用。
封装的内容包括:
1.封装了获取数据库及集合的方法
2.封装了新增一条、多条数据的方法
3.封装了更新一条、根据条件更新多条数据的方法,注意:是将对象统一更新成同一内容。
4.封装了删除一条,根据条件删除多条数据的方法。
5.封装了根据Id获取单条数据,根据条件获取单条数据,获取集合首条数据的方法。
二、环境准备
1 .NET Framework:4.5
2 相关文档
入门指南:http://mongodb.github.io/mongo-csharp-driver/2.2/getting_started/quick_tour/
API文档:http://api.mongodb.org/csharp/2.2
3 使用NuGet下载最新的驱动
1)右键点击类库中【引用】,选择【管理NuGet程序包】
2)联机搜索【mongodb driver】 ,选中安装下图中的3个类库,每个类库都是必须的.
三、类库封装
首先是MongoDB对象类的基础类,所有和MongoDB打交道的类都要基于这个类。
public class MongoObj { public ObjectId _id { get; set; } /// <summary> /// 将对象属性转成字典 /// </summary> /// <returns></returns> public Dictionary<String, Object> ToMap() { Dictionary<String, Object> map = new Dictionary<string, object>(); Type t = this.GetType(); PropertyInfo[] pi = t.GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (PropertyInfo p in pi) { MethodInfo mi = p.GetGetMethod(); if (mi != null && mi.IsPublic) { map.Add(p.Name, mi.Invoke(this, new Object[] { })); } } return map; } /// <summary> /// 将对象属性转成字典,并去掉字典中的_id. /// </summary> /// <returns></returns> public Dictionary<String, Object> ToMapWithoutId() { var map = ToMap(); if (map != null && map.Keys.Contains("_id")) { map.Remove("_id"); } return map; } }