Mongodb-使用C#Drivers实现增删改查

1.回顾:上篇学习了Mongodb的基本命令学习

2.这篇将学习使用Mongodb的C# Drivers实现增删改查

3.准备:

    3.1 C# Drivers支持情况

                     

      面对现在的学习,我们还是使用 Version2.0版本,因为它支持全部的的.NET , 因为技术是越来越成熟的;


    3.2 .NET 平台对 Mongodb版本的支持情况如下 :全部支持

                     


     3.3 下载

            Mongdb C#驱动   和 确定你已经配置和安装好你的Mongodb,若下载不下来的话,可以 点我下载


4.使用 

      4.1 引用

        (1) 打开vs2012及vs2012 版本以上 (.NET FrameWork4.5),新建项目,什么项目都行,能够测试就行,这里         使用控制台应用程序,

        (2)引用 所有dll ;

                                           

      4.2 连接mongdb 

        在连接之前,保证你 打开了 mongodb 服务,若不记得怎么打开,请访问 :点击学习打开服务


5. 新建MongoDb操作工具类 

        花了1个小时,写的工具类,测试测试吧!封装好了 mongdb连接 ,增删改查和创建集合
<pre name="code" class="csharp">using MongoDB.Bson;
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MongoDBDemo1
{
   public class Connection
    {
         //创建数据库连接
       MongoServerSettings setting = new MongoServerSettings();
       MongoServerAddress address =new MongoServerAddress("127.0.0.1", 27017);

       MongoServer server = null;
       string dbName=string.Empty;

       /// <summary>
       ///  得到连接
       /// </summary>
	  public Connection()
       {
           setting.Server = address;
           server = new MongoServer(setting);
       }

        /// <summary>
        /// 构造函数  获得 dbname
        /// </summary>
        /// <param name="dbname">数据库名称</param>
        public Connection(string dbname)
       {
           this.dbName = dbname;
           setting.Server = address;
           server = new MongoServer(setting);
       } 



		  /// <summary>
       /// 外部调用得到数据库
       /// </summary>
       /// <param name="dbName"></param>
       /// <returns></returns>
       public MongoDatabase getMongoDataBase(string dbName)
       {
           return server.GetDatabase(dbName);
       
       }
       /// <summary>
       /// 重载 得到数据库
       /// </summary>
       /// <returns></returns>
       public MongoDatabase getMongoDataBase()
       {
           return server.GetDatabase(dbName);
       
       }

       /// <summary>
       /// 创建集合
       /// </summary>
       /// <param name="colName">集合名字</param>
       /// <returns></returns>
       public bool createCollection(string colName) 
       {
           MongoDatabase db = this.getMongoDataBase();
           CommandResult result= db.CreateCollection(colName);
           if (result.Ok)
           {
               return true;
           }
           else 
           {
               return false;
           }
       }

		
       /// <summary>
       /// 外部调用
       /// </summary>
       /// <param name="colName">集合名称</param>
       /// <param name="db">数据库对象</param>
       /// <returns></returns>

       public MongoCollection<BsonDocument> getMongoColl(string colName,MongoDatabase db){
          return db.GetCollection(colName);
       }

       /// <summary>
       /// 内部使用
       /// </summary>
       /// <param name="colName">集合名称</param>
       /// <returns></returns>

       public MongoCollection<BsonDocument> getMongoColl(string colName){
          return this.getMongoDataBase().GetCollection(colName);
       }
 


        /// <summary>
       /// 查询操作
        /// </summary>
        /// <param name="colName">集合名词</param>
        /// <param name="query">条件</param>
        /// <returns></returns>
       public MongoCursor<BsonDocument> select(string colName,IMongoQuery query){

           MongoCollection<BsonDocument> mcoll=getMongoColl(colName);
           try
           {
               if (query == null)
               {
                   return mcoll.FindAll();
               }
               else
               {
                   return mcoll.Find(query);
               }
           }
           finally {
               this.mongoClose();
           }
           
       }


       /// <summary>
       /// 增加操作
       /// </summary>
       /// <param name="colName">集合名称</param>
       /// <param name="bson">单条数据</param>
       /// <returns></returns>
       public bool insert(string colName,BsonDocument bson) 
       {
           MongoCollection<BsonDocument> mcoll = getMongoColl(colName);
           try
           {
               mcoll.Insert(bson);
               return true;
           }
           catch
           {
               return false;
           }
           finally {
               this.mongoClose();
           }
       }

       /// <summary>
       /// 增加多条
       /// </summary>
       /// <param name="colName">集合名称</param>
       /// <param name="bsonlist">数据集合</param>
       /// <returns></returns>
       public bool insert(string colName, List<BsonDocument> bsonlist)
       {
           MongoCollection<BsonDocument> mcoll = getMongoColl(colName);
           try
           {
               foreach (BsonDocument bson in bsonlist)
               {
                   mcoll.Insert(bson);
               }
               return true;
           }
           catch
           {
               return false;
           }
           finally {
               this.mongoClose();
           
           }
       }

       /// <summary>
       /// 修改操作
       /// </summary>
       /// <param name="colName">集合名称</param>
       /// <param name="query">条件</param>
       /// <param name="upd">修改的内容</param>
       /// <returns></returns>
       public bool update(string colName, IMongoQuery query,IMongoUpdate upd)
       {
           MongoCollection<BsonDocument> mcoll = getMongoColl(colName);
           try
           {
               mcoll.Update(query, upd);
               return true;
           }
           catch
           {
               return false;
           }
           finally {
               this.mongoClose();
           }
       }

       /// <summary>
       /// 删除操作
       /// </summary>
       /// <param name="cloName">集合名称</param>
       /// <param name="query">条件</param>
       /// <param name="flag">是否为0 ,为0 则删除 满足条件的全部信息</param>
       /// <returns>false/true</returns>
       public bool delete(string cloName, IMongoQuery query,int flag) {
           MongoCollection<BsonDocument> mcol = this.getMongoColl(cloName);
           try
           {
               if (flag == 0)
               {
                   mcol.Remove(query, RemoveFlags.None);
               }
               else
               {
                   mcol.Remove(query, RemoveFlags.Single);
               }
               return true;
           }
           catch
           {
               return false;
           }
           finally {
               this.mongoClose();
           }
       }





       /// <summary>
       /// 关闭连接
       /// </summary>
       public void mongoClose(){
         server.Disconnect();
       }
    
   }

}
  


 
 

6.实现增删改查

  6.1 了解

     如果你看前面的在命令行下操作mongodb的话,就开始6.3吧!
 

  6.2 建立连接

         实例化 连接类,声明数据库名,和集合名!
            string dbname = "student";
            string colName = "yuan";
            Connection conn = new Connection(dbname);
  

  6.3 创建集合 

     调用创建方法
         bool type= conn.createCollection(colName);
            if (type)
            {
                Console.WriteLine("创建成功!");
            }
            else 
            {
                Console.WriteLine("创建失败!");
            }

            Console.ReadKey();

  6.4 插入单条信息

      BsonDocument bson = new BsonDocument("name","csdn");
            bool type= conn.insert(colName, bson);
            if (type)
            {
                Console.WriteLine("增加数据成功!");
            }
            else
            {
                Console.WriteLine("增加数据成功失败!");
            }

  6.5 插入多条信息

  Dictionary<string,string> dic=new Dictionary<string,string>();
            dic.Add("name","ming");
            dic.Add("age","23");
            dic.Add("collage","hpu");
            dic.Add("sno","31120907");

            Dictionary<string, string> dic1 = new Dictionary<string, string>();
            dic1.Add("name", "zhuo");
            dic1.Add("age", "10");
            dic1.Add("collage", "hpu");
            dic1.Add("sno", "31120908");

            List<BsonDocument> list = new List<BsonDocument>() { 
              new BsonDocument(dic),
              new BsonDocument(dic1)
            };

            bool type=conn.insert(colName, list);
            if (type)
            {
                Console.WriteLine("增加数据成功!");
            }
            else
            {
                Console.WriteLine("增加数据成功失败!");
            }
            Console.ReadKey();

  6.6 简单查询

     MongoCursor<BsonDocument> cursor = conn.select(colName, null);
            foreach (BsonDocument bson in cursor)
            {
                Console.WriteLine(bson.ToString());
            }
            Console.ReadKey();

   结果如下:
                        

   6.7 条件查询

    //条件查询
            QueryDocument query = new QueryDocument("collage", "hpu");
            MongoCursor<BsonDocument> cursor = conn.select(colName, query);
            foreach (BsonDocument bson in cursor)
            {
                Console.WriteLine(bson.ToString());
            }
            Console.ReadKey();

      结果如下:
                        

     6.8 修改操作

    QueryDocument query = new QueryDocument("name", "zhuo");
            Dictionary<string, string> dic1 = new Dictionary<string, string>();
            dic1.Add("name", "zhuo");
            dic1.Add("age", "23");
            dic1.Add("collage", "hpu");
            dic1.Add("sno", "31120908");
            UpdateDocument upd = new UpdateDocument(dic1);
            bool type = conn.update(colName, query, upd);
            if (type)
            {
                Console.WriteLine("修改数据成功!");
            }
            else
            {
                Console.WriteLine("修改数据失败!");
            }

            //查看修改信息
            QueryDocument query1 = new QueryDocument("name", "zhuo");
            MongoCursor<BsonDocument> cursor = conn.select(colName, query1);
            foreach (BsonDocument bson in cursor)
            {
                Console.WriteLine(bson.ToString());
            }

            Console.ReadKey();

  结果如下:
                     

    6.9 删除操作 


            //先查询下全部
            Console.WriteLine("我是全部");
            MongoCursor<BsonDocument> cursor = conn.select(colName, null);
            foreach (BsonDocument bson in cursor)
            {
                Console.WriteLine(bson.ToString());
            }

            //删除age等于23的
            QueryDocument query = new QueryDocument("age","23");
            //第三个参数 为0时删除满足条件的所有,为其他数字是,仅删除1条
            bool type=conn.delete(colName, query, 1);

            Console.WriteLine("我是删除后的!");
            MongoCursor<BsonDocument> cursor1 = conn.select(colName, null);
            foreach (BsonDocument bson in cursor1)
            {
                Console.WriteLine(bson.ToString());
            }

  效果图如下:

                               


 7.总结 :这里仅仅演示了简单的增删改查,后面,大量的条件查询,还行练习

 8.   demo 下载

    下篇 将学习 JAVA Driver的使用!

操作monodb的c#封装,调用非常方便,可以继承,功能包括: 1、所有数据库操作 2、前台表格类数据获取 public List GetList(List lstColName, Document query, JqGridParam jqParam, ref int count),封装了通用的获取前台表格数据的方法,将在工程中减少大量数据库访问代码,有了这个后对前台表格类查询我们可以不用在Control里使用linq或者封装在Model里然后对前台定义视图类了,使用如下: try { JqGridParam jqParam = new JqGridParam(); jqParam.page = 1; jqParam.rows = 1000; MemberOper memOper = new MemberOper(); MongoBasicOper monOper = new MongoBasicOper(DTName.GROUP_MEMBER); int count = 0; //过滤条件 Document query = new Document(); if (!string.IsNullOrEmpty(find)) { MongoRegex reg = new MongoRegex(".*" + find + ".*"); query.Add(DColName.Name, reg); } query.Add(DColName.GroupId, g); Document[] docStatus = new Document[] { new Document(DColName.Status, RowStatus.Pass), new Document(DColName.Status, RowStatus.Admin) }; query.Add("$or", docStatus); //查询列 List lstColName = new List(); lstColName.Add(DColName.UserId); lstColName.Add(DColName.UserName); //查询数据 var lstRes = monOper.GetListEx(lstColName, query, jqParam, ref count); //转换返回值 JqGrid jg = new JqGrid(); if (count == 0) { return Json(jg.toNull(jqParam), JsonRequestBehavior.AllowGet); } var jsonData = jg.toJson(jqParam, count, lstRes, lstColName); jsonData.param = g; return Json(jsonData, JsonRequestBehavior.AllowGet); } catch (Exception e) { return Json(e.Message, JsonRequestBehavior.AllowGet); }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值