提示:文章写完后,目录可以自动生成,如何生成可
目录
一、MongoDB介绍
MongDB是一个开源的NoSQL数据库,采用文档型数据模型,以JSON风格的文档存储数据。
MongDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
官方文档:MongoDB:应用程序数据平台 | MongoDB
二、MongoDB结构
MongDB主要有四个单元组成,实例、数据库、集合、文档。如下图
实例(Instance)
系统上运行的进程及节点集,一个实例可以有多个库,默认端口 27017。
数据库(Database)
一个数据库中可以包含多个集合,可以在 MongoDB 中创建多个数据库,类似于关系型数据库中的数据库。
集合(Collection)
一个集合可以包含多个文档,类似于关系型数据库中的表(Table)。
文档(Document)
MongoDB 中最基本的单元,由 BSON 键值对(key-value)组成,类似于关系型数据库中的行
(Row)。
SQL 与 MongoDB 常见术语对比 :
SQL | MongoDB |
---|---|
表(Table) | 集合(Collection) |
行(Row) | 文档(Document) |
列(Col) | 字段(Field) |
主键(Primary Key) | 对象 ID(Objectid) |
索引(Index) | 索引(Index) |
嵌套表(Embeded Table) | 嵌入式文档(Embeded Document) |
数组(Array) | 数组(Array) |
三、使用步骤
1.引入库
Nuget包:MongoDB.Driver
2.基础CRUD
//数据连接
var client = new MongoClient("mongodb://localhost:27017");
var database = client.GetDatabase("accounts_db");
var collection = database.GetCollection<Restaurant>("t_user");
//新增
Restaurant newRestaurant = new()
{
Name = "Mongo's Pizza",
RestaurantId = "12345",
Cuisine = "Pizza",
Address = new()
{
Street = "Pizza St",
ZipCode = "10003"
},
Borough = "Manhattan",
};
collection.InsertOne(newRestaurant);
//查询
var filter = Builders<Restaurant>.Filter
.Eq(r => r.Name, "Mongo's Pizza");
var data = collection.Find(filter).FirstOrDefault();
//修改
var filter = Builders<Restaurant>.Filter
.Eq(restaurant => restaurant.Name, "Mongo's Pizza");
var update = Builders<Restaurant>.Update
.Set(p => p.Name, "Mongo's Dim");
var result = collection.UpdateOne(filter, update);
//删除
var filter = Builders<Restaurant>.Filter
.Eq(r => r.Name, "Mongo's Dim");
var result = collection.DeleteOne(filter);
四、使用场景以及优缺点
优点:
1、灵活的数据模型:MongDB一个集合中多条文档,数据结构可以不同。
2、支持丰富的表达式查询。
3、支持索引。
4、支持数据分片、水平扩展。
5、对大容量的存储比较友好。
缺点:
1、弱事务,不保证ACID。
2、占用内存,需要定时处理冗余数据。
3、多表查询或复杂查询不友好。
使用场景:
1、数据结构经常改变,并且不需要复查的多表关联查询以及强一致性的事务。
2、数据不是特别重要,并且数据量很大。
参考:
万字详解,吃透 MongoDB!万字详解,吃透 MongoDB!https://mp.weixin.qq.com/s/JCbkayq07H34RMs8sUmKEA数据库|MongoDB:MongoDB介绍、使用场景、优势MongoDB是一个开源的文档数据库,使用类似JSON格式的文档来存储数据。它是一个非关系型数据库,适用于大量结构化和非结构化数据的存储和处理。https://mp.weixin.qq.com/s/3aZuKEwunYlJDpl-sWRXFg