一、创建测试库、测试表、添加测试数据
使用之前文章提到的MongoDB Compass用法分别添加数据库[myDb]和集合(表)[userinfos]信息,
参考链接为:MongoDB Compass的安装及使用图文说明(非常详细),同时数据库连接语句也可从MongoDB Compass中获得
使用mongo shell命令添加测试数据
添加完成,MongoDB Compass中可看到已添加的数据
二、新建ASP.NET Core Web API项目
1、使用NuGet包管理器添加MongoDB.Driver
2、编写demo示例
1)插入
向myDb.userinfos中插入一条数据
1 | /// <summary> |
在MongoDB compass中可以看到新增的数据
2)查询
① 简单查询
1 | /// <summary> |
简单查询结果为:
② AND查询
1 | /// <summary> |
AND查询结果为:
③ OR查询
1 | /// <summary> |
OR查询结果为:
④ 字段存在(Exists)
1 | /// <summary> |
字段存在(Exists)的查询结果为:
⑤ 排序(Sort)
1 | /// <summary> |
排序(Sort)的查询结果为:
⑥ 查询指定字段(Projection)
1 | /// <summary> |
查询指定字段(Projection)的查询结果为:
3)修改
① 修改单条记录(UpdateOne)
1 | /// <summary> |
② 修改多条记录(UpdateMany)
1 | /// <summary> |
修改多条记录(UpdateMany)的结果为:
4)删除
① 删除单条记录(DeleteOne)
1 | /// <summary> |
删除单条记录(DeleteOne)的结果为:
② 删除多条记录(DeleteMany)
1 | /// <summary> |
删除多条记录(DeleteMany)的结果为:
5)类型映射
① 查询结果映射到实体类示例
mongoDB支持自动映射,直接使用泛型即可
1 | /// <summary> |
用户信息类
1 | /// <summary> |
英文名类
1 | /// <summary> |
查询结果映射到实体类示例的结果为:
② 查询结果映射到实体类示例 - 常用属性修改上方代码
上边的例子仅仅用了基本的自动化映射,使用基本的自动化映射时:类和Bson中的字段必须严格一致(_id除外,可以自动映射到_id/id/Id),且Bson中的每一个字段在实体类中都必须有一个对应的字段,不然就会抛出异常,这就造成我们可能要写一个非常庞大的实体类,而且类中的字段命名也要严格和Bson中的字段一致。这些限制对我们开发来说是不能接受的,这里我们采用mongoDriver中的一些属性改进一下上边的代码,如下:
1 | /// <summary> |
用户信息类 - Bson
1 | /// <summary> |
英文名类 - Bson
1 | /// <summary> |
查询结果映射到实体类示例 - 常用属性修改上方代码的结果为:
6)使用LINQ查询
① 基本查询:查找年龄大于22岁的学生;② 连接查询:查询各个学生的学号、姓名、班级名
1 | /// <summary> |
学生类
1 | /// <summary> |
班级类
1 | /// <summary> |
查找年龄大于22岁的学生以及查询各个学生的学号、姓名、班级名的结果如下:
三、附录
1、userinfos表测试数据
1 | use myDb |
2、student表测试数据
1 | db.students.insertMany([ |
3、classs表测试数据
1 | db.classes.insertMany([ |