zoukankan      html  css  js  c++  java
  • .Net Core中使用MongoDB

    MongoDB 是由C++语言编写的,是一个基于分布式且面向文档存储的开源数据库系统。

    下载地址:

    https://www.mongodb.com/download-center/community

    在.Net Core中使用需要引入核心包 MongoDB.Driver

    添加数据:

    //与Mongodb建立连接
    MongoClient client = new MongoClient("mongodb://127.0.0.1");
    //获得数据库,没有则自动创建
    IMongoDatabase db = client.GetDatabase("db1");
    //拿到集合(表)
    IMongoCollection<Student> student = db.GetCollection<Student>("Student");
    var data = new Student();
    data.id = 1;
    data.name = "江北";
    data.age = 22;
    data.remarks = "暂无";
    //添加一条数据
    student.InsertOne(data);

    在图形化界面中查看一下

     Mongodb默认用id做主键,因此不会显式的指定id是主键。Mongdb中没有内置"自增字段",可以把id声明为ObjectId类型,这样插入以后就自动给字段赋值。

    例如,建一个类:

    public class School
    {
        public ObjectId id { get; set; }
        public string name { get; set; }
        public string address { get; set; }
    }
    //需引入命名空间 using MongoDB.Bson;

     当然School对象之后多加或者去掉一个字段都行。Mongodb是用Json保存的,因此也可以直接用Json格式插入,可用BsonDocument对象作为泛型对象。

    //与Mongodb建立连接
    MongoClient client = new MongoClient("mongodb://127.0.0.1");
    //获得数据库,没有则自动创建
    IMongoDatabase db = client.GetDatabase("db1");
    //拿到集合(表)
    IMongoCollection<BsonDocument> document = db.GetCollection<BsonDocument>("School");
    db.GetCollection<BsonDocument>("School");
    var json = "{id:1,name:'xx学校',address:'xxx路xx号',remarks:'暂无!'}";
    BsonDocument bsons = BsonDocument.Parse(json);

     学生和学校是有对应关系的,我们可以添加有嵌套关系类型的对象

    public class Student
    {
        public int id { get; set; }
        public string name { get; set; }
        public int age { get; set; }
        public string remarks { get; set; }
        public School School { get; set; }
    }
    //与Mongodb建立连接
    MongoClient client = new MongoClient("mongodb://127.0.0.1");
    //获得数据库,没有则自动创建
    IMongoDatabase db = client.GetDatabase("db1");
    //拿到集合(表)
    IMongoCollection<Student> student = db.GetCollection<Student>("Student");
    Student student1 = new Student();
    student1.id = 2;
    student1.name = "北晚舟";
    student1.age = 22;
    student1.remarks = "暂无";
    School school = new School();
    school.name = "xxxSchool";
    school.address = "xxxAddress";
    student1.School = school;
    student.InsertOne(student1);
    

     数据查询:

    //与Mongodb建立连接
    MongoClient client = new MongoClient("mongodb://127.0.0.1");
    //获得数据库,没有则自动创建
    IMongoDatabase db = client.GetDatabase("db1");
    //拿到集合(表)
    IMongoCollection<Student> student = db.GetCollection<Student>("Student");
    var data = Builders<Student>.Filter.Gt(m => m.age, 21);//Gt:大于
    var result = student.Find(data).ToList();

     我们安装的NuGet包是支持Lamda表达式的,可用条件表达式来查找数据

    //与Mongodb建立连接
    MongoClient client = new MongoClient("mongodb://127.0.0.1");
    //获得数据库,没有则自动创建
    IMongoDatabase db = client.GetDatabase("db1");
    //拿到集合(表)
    IMongoCollection<Student> student = db.GetCollection<Student>("Student");
    var data = Builders<Student>.Filter.Where(m => m.age > 21 && m.name.Contains("江"));
    var result = student.Find(data).ToList();

    分页查询:

    //与Mongodb建立连接
    MongoClient client = new MongoClient("mongodb://127.0.0.1");
    //获得数据库,没有则自动创建
    IMongoDatabase db = client.GetDatabase("db1");
    //拿到集合(表)
    IMongoCollection<Student> student = db.GetCollection<Student>("Student");
    var filter = Builders<Student>.Filter.Where(m => m.age > 21);
    FindOptions<Student, Student> findOpt = new FindOptions<Student, Student>();
    findOpt.Limit = 2;
    findOpt.Skip = 1;
    findOpt.Sort = Builders<Student>.Sort.Ascending(m => m.age).Descending(m => m.name);
    var result = (student.FindAsync(filter, findOpt).Result).ToList();

    数据更新:

    //与Mongodb建立连接
    MongoClient client = new MongoClient("mongodb://127.0.0.1");
    //获得数据库,没有则自动创建
    IMongoDatabase db = client.GetDatabase("db1");
    //拿到集合(表)
    IMongoCollection<Student> student = db.GetCollection<Student>("Student");
    var filter = Builders<Student>.Filter.Where(m => m.age > 21);
    var update = Builders<Student>.Update.Set(m => m.name, "皮卡丘");
    //update Student set name="皮卡丘" where age>21
    student.UpdateMany(filter, update); 

     数据删除:

    //与Mongodb建立连接
    MongoClient client = new MongoClient("mongodb://127.0.0.1");
    //获得数据库,没有则自动创建
    IMongoDatabase db = client.GetDatabase("db1");
    //拿到集合(表)
    IMongoCollection<Student> student = db.GetCollection<Student>("Student");
    var filter = Builders<Student>.Filter.Where(m => m.age > 21);
    //delete from Student where age>21
    //student.DeleteMany(filter);
    student.DeleteOne(filter);//只删除一个

    MongoDB中文网:https://www.mongodb.org.cn

     

  • 相关阅读:
    [ubuntu篇] 使用Hexo建立个人博客,自定义域名https加密,搜索引擎google,baidu,360收录
    8.8(文件的高级应用,修改文件的两种方式,函数的定义,定义函数的三种形式,函数的返回值,函数的调用,函数的参数)
    8.7(字符编码,python2和3字符编码的区别,文件的三种打开方式,with管理文件上下操作)
    8.6(数据类型分类,python深浅拷贝,异常处理,基本的文件操作,绝对路径和相对路径)
    8.5(列表,元组,字典,集合的内置方法)
    8.2(数字类型,字符串类型内置方法)
    8.1(while循环,for循环)
    7.31(三种格式化输出的方式,基本运算类型,if判断)
    7.30(数据类型,解压缩,python与用户的交互)
    7.29
  • 原文地址:https://www.cnblogs.com/zhangnever/p/13419532.html
Copyright © 2011-2022 走看看