一、前言

  最近项目中要用到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程序包】

    【MongoDB】 基于C#官方驱动2.2版的封装类

    2)联机搜索【mongodb driver】 ,选中安装下图中的3个类库,每个类库都是必须的.

   【MongoDB】 基于C#官方驱动2.2版的封装类

、类库封装

  首先是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;
        }
    }
View Code

相关文章: