本文利用MongoDB官方发布的C#驱动,封闭了对MongoDB数据库的增删改查访问方法。

    1、引用MongoDB for C# Driver

    从网上下载C#访问MongoDB的驱动,得到两个DLL:

  • MongoDB.Driver.dll
  • MongoDB.Bson.dll

    将它们引用到项目中。

    2、编写数据库访问帮助类

    编写MongoDB访问帮助类MongoDbHelper:

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using MongoDB.Bson;
  5 using MongoDB.Driver;
  6 using MongoDB.Driver.Builders;
  7 using MongoDbTest.Models;
  8 
  9 namespace MongoDbTest
 10 {
 11     /// <summary>
 12     /// MongoDB帮助类
 13     /// </summary>
 14     internal static class MongoDbHepler
 15     {
 16         /// <summary>
 17         /// 获取数据库实例对象
 18         /// </summary>
 19         /// <param name="connectionString">数据库连接串</param>
 20         /// <param name="dbName">数据库名称</param>
 21         /// <returns>数据库实例对象</returns>
 22         private static MongoDatabase GetDatabase(string connectionString, string dbName)
 23         {
 24             var server = MongoServer.Create(connectionString);
 25             return server.GetDatabase(dbName);
 26         }
 27 
 28         #region 新增
 29 
 30         /// <summary>
 31         /// 插入一条记录
 32         /// </summary>
 33         /// <typeparam name="T">数据类型</typeparam>
 34         /// <param name="connectionString">数据库连接串</param>
 35         /// <param name="dbName">数据名称</param>
 36         /// <param name="collectionName">集合名称</param>
 37         /// <param name="model">数据对象</param>
 38         public static void Insert<T>(string connectionString, string dbName, string collectionName, T model) where T : EntityBase
 39         {
 40             if (model == null)
 41             {
 42                 throw new ArgumentNullException("model", "待插入数据不能为空");
 43             }
 44             var db = GetDatabase(connectionString, dbName);
 45             var collection = db.GetCollection<T>(collectionName);
 46             collection.Insert(model);
 47         }
 48 
 49         #endregion
 50 
 51         #region 更新
 52 
 53         /// <summary>
 54         /// 更新数据
 55         /// </summary>
 56         /// <param name="connectionString">数据库连接串</param>
 57         /// <param name="dbName">数据库名称</param>
 58         /// <param name="collectionName">集合名称</param>
 59         /// <param name="query">查询条件</param>
 60         /// <param name="dictUpdate">更新字段</param>
 61         public static void Update(string connectionString, string dbName, string collectionName, IMongoQuery query, Dictionary<string, BsonValue> dictUpdate)
 62         {
 63             var db = GetDatabase(connectionString, dbName);
 64             var collection = db.GetCollection(collectionName);
 65             var update = new UpdateBuilder();
 66             if (dictUpdate != null && dictUpdate.Count > 0)
 67             {
 68                 foreach (var item in dictUpdate)
 69                 {
 70                     update.Set(item.Key, item.Value);
 71                 }
 72             }
 73             var d = collection.Update(query, update, UpdateFlags.Multi);
 74         }
 75 
 76         #endregion
 77 
 78         #region 查询
 79 
 80         /// <summary>
 81         /// 根据ID获取数据对象
 82         /// </summary>
 83         /// <typeparam name="T">数据类型</typeparam>
 84         /// <param name="connectionString">数据库连接串</param>
 85         /// <param name="dbName">数据库名称</param>
 86         /// <param name="collectionName">集合名称</param>
 87         /// <param name="id">ID</param>
 88         /// <returns>数据对象</returns>
 89         public static T GetById<T>(string connectionString, string dbName, string collectionName, ObjectId id)
 90             where T : EntityBase
 91         {
 92             var db = GetDatabase(connectionString, dbName);
 93             var collection = db.GetCollection<T>(collectionName);
 94             return collection.FindOneById(id);
 95         }
 96 
 97         /// <summary>
 98         /// 根据查询条件获取一条数据
 99         /// </summary>
100         /// <typeparam name="T">数据类型</typeparam>
101         /// <param name="connectionString">数据库连接串</param>
102         /// <param name="dbName">数据库名称</param>
103         /// <param name="collectionName">集合名称</param>
104         /// <param name="query">查询条件</param>
105         /// <returns>数据对象</returns>
106         public static T GetOneByCondition<T>(string connectionString, string dbName, string collectionName, IMongoQuery query)
107             where T : EntityBase
108         {
109             var db = GetDatabase(connectionString, dbName);
110             var collection = db.GetCollection<T>(collectionName);
111             return collection.FindOne(query);
112         }
113 
114         /// <summary>
115         /// 根据查询条件获取多条数据
116         /// </summary>
117         /// <typeparam name="T">数据类型</typeparam>
118         /// <param name="connectionString">数据库连接串</param>
119         /// <param name="dbName">数据库名称</param>
120         /// <param name="collectionName">集合名称</param>
121         /// <param name="query">查询条件</param>
122         /// <returns>数据对象集合</returns>
123         public static List<T> GetManyByCondition<T>(string connectionString, string dbName, string collectionName, IMongoQuery query)
124             where T : EntityBase
125         {
126             var db = GetDatabase(connectionString, dbName);
127             var collection = db.GetCollection<T>(collectionName);
128             return collection.Find(query).ToList();
129         }
130 
131         /// <summary>
132         /// 根据集合中的所有数据
133         /// </summary>
134         /// <typeparam name="T">数据类型</typeparam>
135         /// <param name="connectionString">数据库连接串</param>
136         /// <param name="dbName">数据库名称</param>
137         /// <param name="collectionName">集合名称</param>
138         /// <returns>数据对象集合</returns>
139         public static List<T> GetAll<T>(string connectionString, string dbName, string collectionName)
140             where T : EntityBase
141         {
142             var db = GetDatabase(connectionString, dbName);
143             var collection = db.GetCollection<T>(collectionName);
144             return collection.FindAll().ToList();
145         }
146 
147         #endregion
148 
149         #region 删除
150 
151         /// <summary>
152         /// 删除集合中符合条件的数据
153         /// </summary>
154         /// <param name="connectionString">数据库连接串</param>
155         /// <param name="dbName">数据库名称</param>
156         /// <param name="collectionName">集合名称</param>
157         /// <param name="query">查询条件</param>
158         public static void DeleteByCondition(string connectionString, string dbName, string collectionName, IMongoQuery query)
159         {
160             var db = GetDatabase(connectionString, dbName);
161             var collection = db.GetCollection(collectionName);
162             collection.Remove(query);
163         }
164 
165         /// <summary>
166         /// 删除集合中的所有数据
167         /// </summary>
168         /// <param name="connectionString">数据库连接串</param>
169         /// <param name="dbName">数据库名称</param>
170         /// <param name="collectionName">集合名称</param>
171         public static void DeleteAll(string connectionString, string dbName, string collectionName)
172         {
173             var db = GetDatabase(connectionString, dbName);
174             var collection = db.GetCollection(collectionName);
175             collection.RemoveAll();
176         }
177 
178         #endregion
179 
180     }
181 }
View Code

相关文章: