MongoDB Driver 简单的CURD

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: c#中我们可以使用MongoDB.Driver驱动进行对MongoDB数据库的增删改查. 首先需要在NuGet中安装驱动安装完毕后会发现会有三个引用其中 MongoDB.Driver和MongoDB.

c#中我们可以使用MongoDB.Driver驱动进行对MongoDB数据库的增删改查.

 首先需要在NuGet中安装驱动

安装完毕后会发现会有三个引用

其中 MongoDB.Driver和MongoDB.Driver.Core是MongoDB的驱动,而MongoDB.Bson是MongoDB以Bson方式存储

   注:BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON,它和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型

 1.配置MongoDB

  //实例化Mongo的连接字符串对象
  static  MongoUrl mongoUrl = new MongoUrl("mongodb://127.0.0.1:27017");
  //实例化Mongo客户端对象
  static MongoClient client = new MongoClient(mongoUrl);
  //获取所操作的数据库
  static IMongoDatabase db = client.GetDatabase("user");
  //获取所操作的集合
  static IMongoCollection<User> coll = db.GetCollection<User>("User");

   通过上面简单的代码就可以配置完成MongoDB的连接和设置等操作.

   其中IMongoCollection接口中封装了对Mongo的CURD操作

   上面代码中泛型User为自定义实体类User

 public  class User
    {
        [BsonId]
        public string ID { get; set; }
        public string Name { get; set; }
        public string Sex { get; set; }
        [BsonDateTimeOptions(Kind = DateTimeKind.Local)]
        public DateTime BornDate { get; set; }
        public override string ToString()
        {
            return $"姓名{Name},性别{Sex},出生日期{BornDate}";
        }
    }

 

   User实体类中ID和BornDate属性都存在这特性,其中ID属性特性BsonId是声明此属性为数据库中ID,而BornDate中的特性是说明BornDate的序列化方式

2.增加

  增加使用IMongoCollection接口中的InsertOneInsertMany方法,分别为增加一个和多个

  public static void AddOne()
        {
            User user = new User
            {
                ID = Guid.NewGuid().ToString(),
                Name = "狗娃",
                Sex = "",
                BornDate = DateTime.Now
            };
            coll.InsertOne(user);
            
        }
        public static void AddMany()
        {
            IEnumerable<User> users = new List<User>
           {
               new User{ID = Guid.NewGuid().ToString(),Name = "狗剩",Sex = "",BornDate = DateTime.Now},
                 new User{ID = Guid.NewGuid().ToString(),Name = "铁蛋",Sex = "",BornDate = DateTime.Now}
            };
            coll.InsertMany(users);

        }

 

  3.查询

  查询使用Find方法,其中Find方法有多个参数,例如下面代码:

  public static void Find1()
        {
            var entitys = coll.Find<User>(y => y.Sex == "").ToList();
            foreach (var entity in entitys)
            {
                Console.WriteLine(entity);
            }
        }
        public static void Find2()
        {
            //创建过滤器
            FilterDefinition<User> filter = Builders<User>.Filter.Eq(y => y.Sex, "");
            var entitys = coll.Find(filter).ToList();
            foreach (var item in entitys)
            {
                Console.WriteLine(item);
            }
        }

 

  上面代码中我们使用了两种重载,第一种直接在FInd方法中创建Lambda,第二种使用过滤器.两种方式效果一样,不过推荐第一种.

  :Builders.Filter是一个FilterDefinitionBuilder类:;这个类中存在这多种条件。

  4.修改

  IMongoCollection中有UpdateOne和UpdateMany两类方法,其中UpdateOne更改匹配到的第一项,而UpdateMany更改匹配到的所有项

  public static void UpdateOne()
        {
          UpdateDefinition<User> update=  Builders<User>.Update.Set(y => y.Sex, "");
           var res= coll.UpdateOne<User>(y => y.Sex == "", update);
            Console.WriteLine(res.MatchedCount);

        }
        public static void UpdateMany()
        {
            UpdateDefinition<User> update = Builders<User>.Update.Set(y => y.Sex, "");
            var res = coll.UpdateMany<User>(y => y.Sex == "", update);
            Console.WriteLine(res.MatchedCount);

        }

    以上两个方法其中第一个方法只会更新一条,而第二个会更新两条.

 更新时需要先创建所更新的项,即创建UpdateDefinition类实例,通过Builders.Update.Set获取.

    然后通过IMongoCollection对象的UpdateOne/UpdateMany方法进行修改,UpdateOne/UpdateMany方法会返回一个UpdateResult对象,这个对象包含着修改的信息

5.删除

    IMongoCollection删除方法也是两类,DeleteOne/DeleteMany,其规则与其它一样

  public  static void DeleteOne()
  {
      var res=  coll.DeleteOne(y => true);
      Console.WriteLine(res.DeletedCount);
  }
  public static void DeleteMany()
  {
      var res = coll.DeleteMany(y => true);
      Console.WriteLine(res.DeletedCount);
  }

   删除方法也会返回一个DeleteResult对象,其包含着删除的信息.

6.其它方法

 在查询时,MongoDB.Driver也可以跟其它数据库一样使用分页,排序等

  如排序查询

 var entitys = coll.Find<User>(y => y.Sex == "").Sort(Builders<User>.Sort.Ascending(y=>y.Age)).ToList();

 分页查询

  var entitys = coll.Find<User>(y => y.Sex == "").Skip(4).Limit(3).ToList();

 

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
3月前
|
NoSQL MongoDB
MongoDB入门-MongoDB的CURD语句练习
这篇文章提供了MongoDB的CURD操作的练习,涵盖了插入、查询、更新和删除数据的基本命令,并通过具体示例展示了如何在MongoDB中执行这些操作。
46 2
|
4月前
|
人工智能 NoSQL Go
Go MongoDB Driver 实例
Go MongoDB Driver 实例
25 1
|
4月前
|
人工智能 JSON NoSQL
Go MongoDB Driver 中的 A D M E 类型是什么
Go MongoDB Driver 中的 A D M E 类型是什么
43 1
|
6月前
|
NoSQL MongoDB 数据库
MongoDB的CURD(增删改查操作)
MongoDB的CURD(增删改查操作)
83 0
|
存储 NoSQL 关系型数据库
springboot下MongoDB的curd及MongoDB,Redis,MySQL的选择
# 何时使用Redis,MySQL和MongoDB MongoDB,MySQL和Redis都是可用于存储和管理数据的数据库管理系统。这些系统中的每一个都有其独特的特性和功能,具体选择哪一种数据库,取决于具体需求的要求。 以下是何时使用这些数据库管理系统的一些一般准则: - MongoDB:MongoDB是一个NoSQL数据库系统,这意味着它旨在处理大量的非结构化数据。它特别适合存储不适合表的数据,例如具有嵌套结构的数据或经常更改的数据。MongoDB还以其水平可扩展性而闻名,这意味着它可以轻松处理大量数据而不会牺牲性能。 - MySQL:MySQL是一种流行的关系数据库管理系统。
|
SQL NoSQL 前端开发
前端培训-中级阶段(51)- nodeJS操作,MongoDB,文档CURD操作
前端最基础的就是 HTML+CSS+Javascript。掌握了这三门技术就算入门,但也仅仅是入门,现在前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS),本着提升技术水平,打牢基础知识的中心思想,我们开课啦(每周四)。
135 0
前端培训-中级阶段(51)- nodeJS操作,MongoDB,文档CURD操作
|
存储 JSON NoSQL
MongoDB Go Driver使用帮助文档
正式的MongoDB Go Driver近来变成1.0的GA版本。它现在被认为是一个完整的特性, 并且准备好在正式产品中使用。这篇使用说明书将帮助你开始使用 MongoDB Go Driver。你将会创建一个简单的程序并且学到如何: 安装MongoDB Go Driver 使用Go Driver来连接MongoDB 在Go内使用BSON对象 给MongoDB发送CRUD操作 你可以在github代码仓库看到这篇帮助文档的完整代码。为了可以按步骤进行, 你需要一个MongoDB数据库来连接, 你可以使用一个运行在本地的MongoDB数据库, 或者很容易地使用MongoDB Atlas来创建一个
627 0
|
NoSQL 数据库 MongoDB