.Net Core使用MongoDB的详细教程
脚本之家 / 编程助手:解决程序员“几乎”所有问题!
脚本之家官方知识库 → 点击立即使用
前言
MongoDB 是由C++语言编写的,是一个基于分布式且面向文档存储的开源数据库系统。
下载地址:
https://www.mongodb.com/download-center/community
在.Net Core中使用需要引入核心包 MongoDB.Driver
添加数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 | //与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类型,这样插入以后就自动给字段赋值。
例如,建一个类:
1 2 3 4 5 6 | 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对象作为泛型对象。
1 2 3 4 5 6 7 8 9 | //与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); |
学生和学校是有对应关系的,我们可以添加有嵌套关系类型的对象
1 2 3 4 5 6 7 8 | 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 ; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | //与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); |
数据查询:
1 2 3 4 5 6 7 8 | //与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表达式的,可用条件表达式来查找数据
1 2 3 4 5 6 7 8 | //与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(); |
分页查询:
1 2 3 4 5 6 7 8 9 10 11 12 | //与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(); |
数据更新:
1 2 3 4 5 6 7 8 9 10 | //与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); |
数据删除:
1 2 3 4 5 6 7 8 9 10 | //与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
总结
到此这篇关于.Net Core使用MongoDB的完整步骤的文章就介绍到这了,更多相关.Net Core使用MongoDB内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!
相关文章
asp.net生成高质量缩略图通用函数(c#代码),支持多种生成方式
这两天正在研究报表中饼图的绘图方法,文章中的某些做法值得参考.2008-08-08ASP.NET中Response.BufferOutput属性的使用技巧
这篇文章介绍了ASP.NET中Response.BufferOutput属性的使用技巧,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-07-07Asp.net后台把脚本样式输出到head标签中节省代码冗余
最近在学习开发服务器控件,其它就少不了为控件注册js和css之类的资源文件,或者直接注册纯脚本样式。其中就遇到如下问题 1、 注册的资源文件或纯脚本样式在生成的页面中都不在head标签中(当然这个不影响页面功能) 2、 一个页面使用多个一样的控件时,会出现重复输入(出现多余代码)2013-02-02
最新评论