Hello 朋友们✌️,本次我们介绍一种NoSQL数据库,也是当前除了Redis以外比较主流的非关系型数据库—MongoDB,它也被称为文档数据库,并且数据格式类似于JSON,是不是很期待,那我们就马上开始本次的文章讲解!🙈
1 基本介绍
GitHub:github.com/mongodb/mon…
1.1 MongoDB是什么
MongoDB是一个非关系型文档数据库,旨在简化开发和扩展。
什么是文档数据库?
首先,文档数据库并不是存放文档文件的数据库,在应用程序层中,数据经常表示为 JSON 文档,并将其数据模型视为文档,因此存放该数据模型的数据库就被称为文档数据库。
文档数据库也是非关系型数据库(NoSQL)的一种,一个文档相当于关系数据库中的一条记录。
1.2 重要概念
MongoDB中的一条记录是一个文档,它是由字段和值对组成的数据结构。 MongoDB文档类似于JSON对象。 字段的值可以包括其他文档、数组和文档数组。
MongoDB中有三层概念:Database、Collection、Document,他们的关系是Database>Collection>Document
- Database:数据库,也类似于关系型数据库中的数据库
- Collection:集合,类似于关系型数据库中的表
- Document:文档,类似于关系型数据库中的一条数据
1.3 关键特性
- 高性能
- 查询API
- 高可用性
- 水平伸缩性
- 支持多种存储引擎
1.4 BSON数据类型
BSON是MongoDB中用于存储文档和进行远程过程调用的二进制序列化格式。
JSON和BSON的区别:
与JSON相比,BSON着眼于提高存储和扫描效率。BSON文档中的大型元素以长度字段为前缀以便于扫描。BSON使用的空间会多于JSON。另外,除了支持 JSON 中的数据类型外,BSON 还支持日期(Date)和二进制(BinData)等类型。
JSON | BSON |
JSON 是 javascript 对象表示法 | BSON 是二进制 JSON |
是一种轻量级的、基于文本的、开放的数据交换格式 | 是一种二进制序列化文档格式 |
JSON 包含一些基本数据类型,如字符串、数字、布尔值、空值 | 除了支持 JSON 中的类型外,BSON 还包含一些额外的数据类型,例如日期(Date)、二进制(BinData)等 |
AnyDB、redis 等数据库将数据存储为 JSON 格式 | MongoDB 中将数据存储为 BSON 格式 |
主要用于传输数据 | 主要用于存储数据 |
没有响应的编码和解码技术 | 有专用的编码和解码技术 |
如果想从 JSON 文件中读取指定信息,需要遍历整个数据 | 在 BSON 中,可以使用索引跳过到指定内容 |
JSON 格式不需要解析,因为它是人类可读的 | BSON 需要解析,因为它是二进制的 |
JSON 是对象和数组的组合,其中对象是键值对的集合,而数组是元素的有序列表 | BSON 是二进制数据,在其中可以存储一些附加信息,例如字符串长度、对象类型等 |
2 安装使用
各版本下载地址:www.mongodb.com/docs/manual…
2.1 Windows下安装
双击安装包:
默认,直接下一步:
直接下一步:
2.2 工具安装
操作MongoDB最常用的工具有两个,如图,一个是命令行操作,一个是类似于Web页面的操作。
2.2.1 MongoDB Shell
MongoDB Shell是连接和使用MongoDB最快的方法。通过这个现代的、可扩展的命令行界面,可以轻松地查询数据、配置设置和执行其他操作,具体的功能有语法高亮显示、智能自动完成、上下文帮助和错误消息。
2.2.2 MongoDB Compass
MongoDB Compass是 MongoDB的GUI,也就是可视化界面,直观而灵活,提供了详细的模式可视化、实时性能指标、复杂的查询功能等等。
MongoDB Compass有三个版本:一个拥有所有特性的完整版本,一个没有写或删除功能的只读版本,以及一个单独的版本,它的唯一网络连接到MongoDB实例。
3 初步使用
3.1 使用MongoDB Shell进行CRUD
3.1.1 连接到MongoDB
运行mongosh,不带任何命令行选项,连接到运行在你的localhost上的MongoDB实例,默认端口27017:
mongosh 复制代码
带参数的连接命令:
# 使用URL连接 mongosh "mongodb://localhost:27017" # 指定端口号连接 mongosh --port 28015 # 自定义URL连接 mongosh "mongodb://mongodb0.example.com:28015" # 自定义host和port连接 mongosh --host mongodb0.example.com --port 28015 # 使用用户名和密码连接 mongosh "mongodb://mongodb0.example.com:28015" --username alice --authenticationDatabase admin 复制代码
实例:
3.1.2 增
insertOne()
返回一个包含新插入文档的’ _id '字段值的文档。insertMany()
返回一个包含新插入文档’ ’ _id '字段值的文档。
插入一个:
# 选择数据库 use test # 插入数据 db.movies.insertOne( { title: "The Favourite", genres: [ "Drama", "History" ], runtime: 121, rated: "R", year: 2018, directors: [ "Yorgos Lanthimos" ], cast: [ "Olivia Colman", "Emma Stone", "Rachel Weisz" ], type: "movie" } ) 复制代码
查询:
db.movies.find( { title: "The Favourite" } ) 复制代码
同时插入多个:
use test db.movies.insertMany([ { title: "Jurassic World: Fallen Kingdom", genres: [ "Action", "Sci-Fi" ], runtime: 130, rated: "PG-13", year: 2018, directors: [ "J. A. Bayona" ], cast: [ "Chris Pratt", "Bryce Dallas Howard", "Rafe Spall" ], type: "movie" }, { title: "Tag", genres: [ "Comedy", "Action" ], runtime: 105, rated: "R", year: 2018, directors: [ "Jeff Tomsic" ], cast: [ "Annabelle Wallis", "Jeremy Renner", "Jon Hamm" ], type: "movie" } ]) 复制代码
3.1.3 删
deleteMany()
:该方法返回一个包含操作状态的文档deleteOne()
:删除一个文档,该方法返回一个包含操作状态的文档
删除全部:
db.movies.deleteMany({}) 复制代码
根据条件删除多个:
db.movies.deleteMany( { title: "Titanic" } ) 复制代码
根据条件删除一个:
use sample_mflix db.movies.deleteOne( { cast: "Brad Pitt" } ) 复制代码
3.1.4 改
updateOne()
:修改一个updateMany()
:同时修改多个replaceOne()
:替换一个
根据添加修改:
use test db.movies.updateOne( { title: "Tag" }, { $set: { plot: "One month every year, five highly competitive friends hit the ground running for a no-holds-barred game of tag" } { $currentDate: { lastUpdated: true } } }) 复制代码
修改多个:
db.movies.updateMany( { security_deposit: { $lt: 100 } }, # 修改security_deposit小于100的 { $set: { security_deposit: 100, minimum_nights: 1 } } ) 复制代码
替换一个:
db.movies.replaceOne( { account_id: 371138 }, # 替换account_id为371138的 { account_id: 893421, limit: 5000, products: [ "Investment", "Brokerage" ] } ) 复制代码
3.1.5 查
find()
:查找全部或根据条件返回
查找全部:
use test db.movies.find() 复制代码
根据条件查找:
db.movies.find( { "title": "Titanic" } ) 复制代码
3.2 MongoDB Compass简单使用
3.2.1 连接MongoDB Server
3.2.2 查看数据库
3.2.3 查看数据
3.2.3 添加和修改数据
选择添加一个文档:
会自动生成ID,我们不需要改,只填写主体内容即可:
点击这个按钮可以修改:
4 小总结
今天的分享到这里就结束了,如果有讲的不清楚的地方请在下发留言哈,在下一节我们将会使用MongoDB官方的Drivers来进行不同的编程语言对MongoDB的操作,敬请期待~ 🎍
参考文章: