全网通网站,wordpress 按点击调用热门文章,做网站要实名认证吗,wordpress 预览 404前言 上一章节主要概述了MongoDB的优劣势、应用场景和发展史。这一章节将快速的概述一下MongoDB的基本概念#xff0c;带领大家快速入门MongoDB这个文档型的NoSQL数据库。 MongoDB从入门到实战的相关教程
MongoDB从入门到实战之MongoDB简介#x1f449;
MongoDB从入门到实战…前言 上一章节主要概述了MongoDB的优劣势、应用场景和发展史。这一章节将快速的概述一下MongoDB的基本概念带领大家快速入门MongoDB这个文档型的NoSQL数据库。 MongoDB从入门到实战的相关教程
MongoDB从入门到实战之MongoDB简介
MongoDB从入门到实战之MongoDB快速入门 YyFlight.ToDoList项目源码地址 GitHub地址GitHub - YSGStudyHards/YyFlight.ToDoList: 【.NET8 MongoDB 待办清单系统】.NET8 MongoDB从入门到实战基础教程该项目后端使用的是.NET8、前端页面使用Blazor、使用MongoDB存储数据更多相关内容大家可以看目录中的MongoDB从入门到实战的相关教程。该系列教程可作为.NET Core入门项目进行学习感兴趣的小伙伴可以关注博主和我一起学习共同进步。 MongoDB是什么?
MongoDB 是一个基于分布式文件存储的数据库。由 C 语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品是非关系数据库当中功能最丰富最像关系数据库的。它支持的数据结构非常松散是类似Json的Bson格式因此可以存储比较复杂的数据类型。 MongoDB 最大的特点是它支持的查询语言非常强大其语法有点类似于面向对象的查询语言几乎可以实现类似关系数据库单表查询的绝大部分功能而且还支持对数据建立索引。并且MongoDB-4.2版本开始已经支持分布式事务功能。 简而言之的话就是MongoDB是一个文档型的NoSQL数据库用于构建高并发、高可用和高扩展的互联网应用程序。 MongoDB概念解析 无论我们学习什么数据库都应该先了解对应数据库的基本概念在MongoDB中基本的概念是文档、集合、数据库下面我们挨个介绍。
MongoDB和RDBMS术语概念对比
虽然 MongoDB 与传统的 RDBMS 共享一些相同的术语但其他一些是 NoSQL 数据库所独有的。为了帮助了解它们的分别下表将 RDBMS 使用的术语与 MongoDB 使用的术语进行比较
RDBMS术语/概念MongoDB术语/概念解释/说明databasedatabase数据库tablecollection数据库表/集合rowdocument数据记录行/文档columnfield数据字段/域indexindex索引table joins 嵌入式文档表连接,MongoDB不支持表连接只支持嵌入式文档primary keyprimary key主键,MongoDB自动将_id字段设置为主键默认键 _id 由 MongoDB 提供 MongoDB文档Documment
概述 文档是一组键值(key-value)对(即 BSON)。MongoDB 的文档不需要设置相同的字段并且相同的字段不需要相同的数据类型这与关系型数据库有很大的区别也是MongoDB非常突出的特点。 MongoDB 的文档可以理解为关系型数据库(Mysql)的一行记录MongoDB 将数据记录为 BSON 格式的文档BSON 是 JSON 文档的二进制表示但它支持的数据类型更加丰富
MongoDB文档由字段和值对组成并具有以下结构 {field1: value1,field2: value2,field3: value3,...fieldN: valueN
} MongoDB Bson格式介绍
Bson是一种类Json的一种二进制形式的存储格式简称Binary Json它和Json一样支持内嵌的文档对象和数组对象但是Bson有Json没有的一些数据类型如Date和BinData类型。
Bson可以做为网络数据交换的一种存储形式这个有点类似于Google的Protocol Buffer但是Bson是一种schema-less的存储形式它的优点是灵活性高但它的缺点是空间利用率不是很理想Bson有三个特点轻量性、可遍历性、高效性
{“hello:world} 这是一个Bson的例子其中hello是key name它一般是cstring类型字节表示是cstring:: (byte*) /x00 ,其中*表示零个或多个byte字节/x00表示结束符;后面的world是value值它的类型一般是string,double,array,binarydata等类型。
JSON vs BSON JSON的局限性比如它只有null、布尔、数字、字符串、数组和对象这几种数据类型没有日期类型只有一种数字类型无法区分浮点数和整数也没法表示正则表达式或者函数。BSON是一种类JSON的二进制形式的存储格式Binary JSON支持内嵌的文档对象和数组对象如Date和BinData类型MongoDB使用BSON做为文档数据存储和网络传输格式。 MongoDB数据类型
下表为MongoDB中常用的一些数据类型 详情介绍参见BSON TypesMongodb 中文文档 - BSON Types | Docs4dev 数据类型描述String字符串。存储数据常用的数据类型。在 MongoDB 中UTF-8 编码的字符串才是合法的。Integer整型数值。用于存储数值。根据你所采用的服务器可分为 32 位或 64 位。Boolean布尔值。用于存储布尔值真/假。Double双精度浮点值。用于存储浮点值。Min/Max keys将一个值与 BSON二进制的 JSON元素的最低值和最高值相对比。Arrays用于将数组或列表或多个值存储为一个键。Timestamp时间戳。记录文档修改或添加的具体时间。Object用于内嵌文档。Null用于创建空值。Symbol符号。该数据类型基本上等同于字符串类型但不同的是它一般用于采用特殊符号类型的语言。Date日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间创建 Date 对象传入年月日信息。Object ID对象 ID。用于创建文档的 ID。Binary Data二进制数据。用于存储二进制数据。Code代码类型。用于在文档中存储 JavaScript 代码。Regular expression正则表达式类型。用于存储正则表达式。
下面简单介绍一下其中几个比较重要的类型
ObjectId 每次插入一条数据系统都会自动插入一个_id键键值不可以重复它可以是任何类型的也可以手动的插入默认情况下它的数据类型是ObjectId由于MongoDB在设计之初就是用作分布式数据库所以使用ObjectId可以避免不同数据库中_id的重复如果使用自增的方式在分布式系统中就会出现重复的_id的值。 ObjectId使用12字节的存储空间每个字节可以存储两个十六进制数字所以一共可以存储24个十六进制数字组成的字符串在这24个字符串中前8位表示时间戳接下来6位是一个机器码接下来4位表示进程id最后6位表示计数器。
MongoDB 采用 ObjectId 来表示主键的类型数据库中每个文档都拥有一个_id 字段表示主键_id 的生成规则如下 其中包括4-byte Unix 时间戳3-byte 机器 ID2-byte 进程 ID3-byte 计数器(初始化随机) 601e2b6b aa203c c89f 2d31aa↑ ↑ ↑ ↑
时间戳 机器码 进程id 计数器
String BSON 字符串为 UTF-8.通常在对 BSON 进行序列化和反序列化时每种编程语言的驱动程序都会从该语言的字符串格式转换为 UTF-8.这样就可以轻松地将大多数国际字符存储在 BSON 字符串中。 [1]此外MongoDB $regex查询在正则表达式字符串中支持 UTF-8。
Timestamps BSON 具有特殊的时间戳类型供内部 MongoDB 使用并且不与常规Date类型关联。此内部时间戳记类型是 64 位值其中
最重要的 32 位是time_t值(自 Unix 时代以来的秒数)最低有效 32 位是在给定的秒内进行操作的ordinal增量。尽管 BSON 格式为低位字节序因此首先存储了最低有效位但是mongod实例在所有平台上始终将time_t值先于ordinal值进行比较无论字节序如何。在单个mongod实例中时间戳记值始终是唯一的。在复制中oplog有一个ts字段。该字段中的值反映了使用 BSON 时间戳值的操作时间。
Date BSON Date 是一个 64 位整数代表自 Unix 纪元(1970 年 1 月 1 日)以来的毫秒数。这导致可以 traceback 到过去和 Future 约 2.9 亿年的日期范围。 MongoDB索引种类
_id索引绝大多数集合默认建立的索引对于每个插入的数据mongodb都会自动生成一条唯一的_id字段。单键索引不自动创建值单一例如字符串数字或者日期。多键索引不自动创建值有多个如数组与单键索引创建形式相同区别在于字段的值。复合索引查询条件不只一个时需要建立复合索引。过期索引TTL是在一段时间后会过期的索引索引过期后相应的数据会删除不仅仅是索引删除还有数据适用场景在一段时间之后会时效的数据比如用户的登陆信息、存储的日志建立方法db.test.ensureIndex({time:1},{expireAfterSeconds:10})秒数。其限制存储在过期索引字段的值必须是指定的时间类型ISODate或者其数据不能使用时间戳否则不能被自动删除指定ISODate数组则按照最小的时间进行删除过期索引不能是复合索引删除时间不精确MongoDB默认60s执行一个删除过程删除本身也需要时间全文索引对字符串与字符串数组创建全文课搜索的索引。地理位置索引将一些点的位置存储在MongoDB中创建索引后可以按照位置来查找其他点。 MongoDB GUI可视化工具 俗话说工欲善其事必先利其器。选择一款高效的GUI可视化客户端管理工具对于我们的日常开发效率都有大大的提升。下面推荐几款比较好用的MongoDB GUI可视化管理工具
Navicat for MongoDB 官网下载地址Navicat | 下载 Navicat for MongoDB 14 天 Windows、macOS 和 Linux 的试用版 在 Navicat for MongoDB 使用文档在 Navicat for MongoDB 使用文档 老牌的数据库管理工具支持多种数据库的集成已集成 MongoDB 类型属于付费型管理工具。好处是用会了一个 DB 版的 Navicat所有 DB 版都会很顺手维持一套操作习惯如果再肌肉记忆一些快捷键会更加高效。
Robo 3T (Robomong) 官网下载地址Robo 3T | Free, open-source MongoDB GUI (formerly Robomongo) Robo 3T 前身是 Robomongo后被 3T 公司收购是一款免费开源的 GUI 管理工具。支持 MongoDB 4.0轻量级 GUI支持语法填充等等。适用于 WindowsmacOS 和 Linux 系统。
Studio 3T 官网下载地址Download Studio 3T for MongoDB | Windows, macOS Linux 超过 100,000 的开发人员和数据库管理员使用 Studio 3T 作为 MongoDB GUI 的首选。Studio 3T 属于收费工具30 天的免费试用期Studio 3T 具有更多更强大的功能并提供企业支持服务支持副本集、独立主机和分片集群连接支持导入导出SQL 查询语法填充支持 MongoDB 4.0 等等。适用于 WindowsmacOS 和 Linux。
MongoDB Compass 官网下载地址MongoDB Compass Download (GUI) | MongoDB 官网教程Connection Strings — MongoDB Manual MongoDB 亲儿子系列官方自己推出的 GUI 可视化管理工具功能有限。免费简洁不支持 SQL 查询支持性能监控。适用于 WindowsmacOS 和 Linux 系统。
NoSQLBooster for MongoDB 官网下载地址NoSQLBooster - The Smartest GUI Tool and IDE for MongoDB NoSQLBooster for MongoDB以前叫 MongoBooster风格有点类似于 EasyUI支持副本集独立主机和分片群集连接提供了全面的服务器监控工具、fluent 查询构建器、SQL 查询、查询代码、任务调度、ESNext 支持和真正的智能感知体验等。提供了付费和免费两种版本。适用于 WindowsmacOS 和 Linux 系统。
NoSQL Manager for MongoDB Professional 官网下载地址Download NoSQL Manager for MongoDB 从 2.2 到 4.4 全面支持 MongoDB 和 MongoDB Enterprise 版本。功能齐全的 MongoDB UI Shell。具有代码自动完成功能语法突出显示和提示。支持副本集独立主机和分片群集连接导入导出简单查看和管理所有 MongoDB 对象数据库集合视图索引用户角色和功能等等。提供了付费和免费两种版本。 参考文章
MongoDB 概念解析
MongoDB GUI可视化客户端管理工具推荐