使用mongodb,增删改

        最近一个项目,数据库既然用的mongodb。之前没接触啊,怎么办,那就重新学呗。挺好玩的

      稍微介绍一,呵呵。Mongodb是一个基于分布式文件存储的数据库。有C++语言编写。旨在web应用提供可 扩展的高性能的数据存储解决方案。

      MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种。

      MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

      传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。

   不扯淡了,直接进入主题。

    介绍一下mongodb 数据的 安装过程

1.

    把mongodb安装成window服务

    每次运行mongod –dbpath D:/MongoDB/data命令行来启动MongoDB实在是不方便,把它作为Windows服务,这样就方便多了。命令如下:

D:\MongoDB\bin>mongod --logpath D:\MongoDB\logs\MongoDB.log --logappend --dbpath D:\MongoDB\data --directoryperdb --serviceName MongoDB --install

   注意:
1:log一定要指定一个xxx.log文件(文件不存在也要这么写,会自动创建,写成这样是不可以的–logpath d:\mongodb\logs);
2:logs文件夹和data文件夹要先新建好;serviceName的N字母要大写。

该命令行指定了日志文件:D:\MongoDB\logs\MongoDB.log,日志是以追加的方式输出的;

数据文件目录:D:\MongoDB\data,并且参数–directoryperdb说明每个DB都会新建一个目录;

Windows服务的名称:MongoDB;

以上的三个参数都是可以根据自己的情况而定的。

最后是安装参数:–install,与之相对的是–remove

启动MongoDB:net start MongoDB
停止MongoDB:net stop MongoDB

   (一)数据可的链接。

          在web.config链接

     

<connectionStrings>
    <add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-iDream.Web-20131021202431;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-iDream.Web-20131021202431.mdf" />
  </connectionStrings>

 

  (二)在C#中使用官方的驱动来操作mongodb数据库

    (1)在nuget 中找到official mongodb C# driver 并下载,安装

       完成之后再引用中会看到 mongodb.Driver.dll(驱动程序)和mongodb.Bson(序列化,Json相关)的两dll

      驱动安装完成,接下来进行数据库的链接

    (2)链接数据库,代码如下

    

        MongoServer _server;
        MongoDatabase _database;
        MongoCollection<BaseDetails> _contacts;


        public BaseDetailsRepository()
            : this("")
        {
        }
        public BaseDetailsRepository(string connection)
        {
            if (string.IsNullOrWhiteSpace(connection))
            {
                connection = "mongodb://localhost:27017";
            }

            _server = MongoServer.Create(connection);
            _database = _server.GetDatabase("iD_BaseDetails", SafeMode.True);//数据库的名称
            _contacts = _database.GetCollection<BaseDetails>("iD_BaseDetails");//要链接的集合
        }

    顺便把模型一起贴出来吧

  

using MongoDB.Bson.Serialization.Attributes;

  [BsonId]
        public string DId { set; get; }
        public string BId { set; get; }
        public string Que01 { set; get; }
        public string Que02 { set; get; }
        public string Que03 { set; get; }

   这样的话链接数据库也就完成了,接下来进行增删改了

    (三)添加数据

   

  public BaseDetails AddBaseDetail(BaseDetails item)
        {
            item.DId = ObjectId.GenerateNewId().ToString();
            //item.PubDt = DateTime.UtcNow;
            _contacts.Insert(item);
            return item;
        }

 调用AddBaseDetail方法

   

 [HttpPost]
        public ActionResult Detail(BaseDetails item, string Id)
        {
            BaseDetailsRepository bd = new BaseDetailsRepository();
            bd.AddBaseDetail(item);          
           return RedirectToAction("Success");
      }

  (四)修改数据

  

   先把要修改的那条记录的ID找出了,在根据iD找出这条记录,再去修改这条记录里的某一个字段

(1)根据iD找出这个记录

public BaseReg GetData(string id)
        {
            IMongoQuery imq = Query.EQ("_id", id);
            return _contacts.Find(imq).FirstOrDefault();
        }

 修改这条记录

 [HttpPost]
         public ActionResult TJBeiZhu(string Id,BaseReg brg)
         {
             try
             {
                 BaseReg br = new BaseReg();
                 BaseRepostory brt=new BaseRepostory();初始化
                 BaseReg model = brt.GetData(Id);//找出这条数据
                 br.Id = model.Id;
                 br.BId = model.BId;
                 br.RName = model.RName;
                 br.Nickname = model.Nickname;
                 br.Local = model.Local;
                 br.Phone = model.Local;
                 br.Weixin = model.Weixin;
                 br.WeiBo = model.WeiBo;
                 br.Qq = model.Qq;
                 br.Email = model.Email;
                 br.Project = model.Project;
                 br.PubDt = model.PubDt;
                 br.Beizhu =brg.Beizhu;
                 brt.AddBeiZhu(br);//修改
                 return RedirectToAction("index", "Admin");
             }
             catch (Exception ex)
             {
                 
                 throw ex;
             }
         }

 更新这条记录

 public BaseReg AddBeiZhu(BaseReg model)
        {
            //定义“Id”的值为model.Id的查询条件
           // var query = new QueryDocument { { "Id", model.Id } };
            IMongoQuery query = Query.EQ("_id", model.Id);
            //定义更新文档           
            var update = new UpdateDocument { { "$set", new QueryDocument { { "Beizhu", model.Beizhu } } } };         
            //执行更新操作
            _contacts.Update(query, update);
            return model;
        }

 (五)删除

   (1) 找出这条数据的ID,在进行删除

public BaseReg GetData(string id)
        {
            IMongoQuery imq = Query.EQ("_id", id);
            return _contacts.Find(imq).FirstOrDefault();
        }

   (2)删除

  

 [HttpPost]
         public ActionResult DelBase(string Id)
         {
             try
             {
                 BaseRepostory brt = new BaseRepostory();
                 BaseReg model = brt.GetData(Id);
                 brt.DelData(model);
                 return RedirectToAction("index", "Admin");
             }
             catch (Exception ex)
             {

                 throw ex;
             }
         }

 

public BaseReg DelData(BaseReg model)
        {
            IMongoQuery imq = Query.EQ("_id", model.Id);
            _contacts.Remove(imq);
            return model;
        }

 OK了。

猜你喜欢

转载自jianxi-lin.iteye.com/blog/2035059