搜索
首页
我要提问
随便写写
我要写书
《MongoDB权威指南》
价格:免费
状态:全书已完结
在读人数:45
热度:1764
开始阅读
加入书架
创建者
叫我小透明
9 粉丝 52博客
关注
打赏
内容简介
如果你希望使用支持现代应用程序开发的系统来管理数据,那么MongoDB是不错的选择。作为面向文档的NoSQL数据库,MongoDB功能多、灵活且易于扩展,在DB-Engines数据库流行度排行榜上名列前茅。
本书是由MongoDB团队成员撰写的入门指南,涵盖从开发到部署的各个方面,内容适合MongoDB 4.2及以上版本。无论你是NoSQL新手还是有经验的MongoDB用户,都可以在查询、索引、聚合、事务、副本集、分片、监控和安全等方面收获新的知识。
●使用MongoDB执行写操作、查找文档并进行复杂的查询
●对集合进行索引,对数据进行聚合,在应用程序中使用事务
●配置本地副本集,并了解复制机制如何与应用程序交互
●创建集群的各个组件,并为不同类型的应用程序选择片键
●探索应用程序管理的各个方面,并配置身份验证和授权
●使用工具进行监控、备份和恢复,并在部署MongoDB时对系统进行设置
章节目录
第一章 学习前的准备工作
1.1 什么是NoSQL
最常见的数据库可以分为下面的两种类型: RDBMS(关系型数据库):常见的关系型数据库有 Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL; NoSQL(非关系型数据库):常见的非关系型数据库有 MongoDB、Redis、Voldemort、Cassandra、Riak、Cou
1.2 MongoDB的诞生
MongoDB 是一个开源的、可扩展的、跨平台的、面向文档的非关系型数据库,它由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。在 MongoDB 中支持以类似 json 的 bson(一种计算机数据交换格式)格式来存储数据,因此可以存储比较复杂的数据类型。MongoDB 最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象语言中函数调用,几乎可
1.3 如何在Windows上安装MongoDB
通过前面的介绍我们已经简单的了解了 MongoDB,本节我们来看看如何在 Windows 系统上安装 MongoDB。 下载 MongoDB 要在 Windows 系统上安装 MongoDB,首先需要在 MongoDB 的官网(https://www.mongodb.com/try/download/community)下载 MongoDB 的安装包
1.4 如何在Linux上安装MongoDB
MongoDB 是跨平台的,既可以在 Windows 系统下安装,也可以在 Linux 系统下安装,本节我们就来介绍一下如何在 Linux 系统下安装 MongoDB。 下载 MongoDB MongoDB 官方提供了多种 Linux 发行版的安装包,您可以在官网下载合适的
1.5 如何在MacOS上安装MongoDB
在 Mac OS 系统下安装 MongoDB 与在 Linux 下安装比较相似,本节我们就来详细介绍一下 Mac OS 系统下如何安装 MongoDB。 下载 MongoDB 与在 Linux 系统下安装 MongoDB 相同,首
第二章 MongoDB基础操作
2.1 MongoDB中的常用概念
前面我们介绍了在不同的系统下安装 MongoDB,在具体学习 MongoDB 的操作之前,我们先来介绍一些 MongoDB 中的基本概念。 数据库 数据库是用于存储数据的物理容器,每个数据库在文件系统中都有属于自己的文件集。一台 MongoDB 服务器中可以创建多个数据库,并且每个数据库都是独立的,都有属于自己的集合和权限,而且不同数据库中的数据会放置在不同的文件
2.2 MongoDB中的数据类型
下表中列举了 MongoDB 中常用的几种数据类型:数据类型描述String字符串类型,是最常用的数据类型,不过在 MongoDB 中,只有 UTF-8 编码的字符串才是合法的Integer整型,用于存储数值。根据您使用服务器的不同,整型可以分
2.3 MongoDB数据模型设计
在 MongoDB 中存储数据非常灵活,它与关系型数据库完全不同,在关系型数据库中,插入数据之前必须先确定数据表的结构并创建数据表。而 MongoDB 中对文档的结构没有强制要求,只要合理即可。 数据模型设计 MongoDB 提供了两种数据模型,分别是嵌入式数据模型和规范化数据模型,您可以根据需要使用其中的任何一种。 在 MongoDB 中模型设
2.4 MongoDB连接数据库
在操作 MongoDB 数据库之前我们需要先连接数据库,您可以使用 MongoDB shell 来连接 MongoDB,也可以使用 PHP、Java 等编程语言来连接 MongoDB,本节我们主要介绍一下使用 MongoDB shell 来连接 MongoDB。
2.5 MongoDB创建数据库
在 MongoDB 中我们可以使用use命令来创建数据库,如果该数据库不存在,则会创建一个新的数据库,如果该数据库已经存在,则将切换到该数据库。使用use命令创建数据库的语法格式如下: use database_name 其中 database_name
2.6 MongoDB删除数据库
前面我们介绍了如何在 MongoDB 中《创建数据库》,本节我们来介绍一下如何删除 MongoDB 中的数据库。MongoDB 中删除当前数据库的语法格式如下: db.dropDatabase() 注意:使用 db.dropDatabase() 命令会删除当前数据库,在
2.7 MongoDB创建集合
MongoDB 中的集合是一组文档的组合,类似于关系型数据库(例如 MySQL)中的数据表。集合存在于数据库中,且没有固定的结构,您可以向集合中插入不同格式或类型的数据。在 MongoDB 中,您可以使用 createCollection() 方法来创建集合,语法格式如下: db.createCollection(name, options) 参数说明如下: name:
2.8 MongoDB删除集合
在 MongoDB 中,可以使用 drop() 方法来从数据库中删除指定集合,它会从数据库中完全删除一个集合,并且不会留下与已删除集合关联的任何索引。drop() 方法在使用时不需要带有任何参数,并且在使用参数调用时会产生错误,该方法的语法格式如下: db.collection_name.drop() 其中 collect
2.9 MongoDB插入文档
前面我们已经介绍了如何在 MongoDB 中创建数据库和创建集合,接下来我们再来介绍一下如何在集合中插入文档。文档是 MongoDB 中数据的基本单位,由 BSON 格式(一种计算机数据交换格式,类似于 JSON)的键/值对组成。 insert() 与 save() 方法 您可以使用 MongoDB 中的 insert() 或 s
2.10 MongoDB查询文档
前面我们介绍了怎么将文档插入到集合中,本节我们来介绍一下如何从集合中查询指定的文档。 find() 方法 想要查询集合中的文档,可以使用 MongoDB 中的 find() 方法,find() 方法可以将查询结果以非结构化的方式展示出来,其
2.11 MongoDB更新文档
在 MongoDB 中,可以使用 update() 和 save() 方法来更新集合中的文档。其中 update() 方法可以更新现有文档中的值,而 save() 方法则可以使用传入文档来替换已有文档。 update() 方法 update() 方法用于更新现有文档中的值,其语法格式如下: db.collection_name.update(<query>,<update&
2.12 MongoDB删除文档
在 MongoDB 中,您可以使用 remove() 方法从集合中删除文档,语法格式如下: db.collection_name.remove(<query>,{justOne: <boolean>,writeConcern: <
2.13 MongoDB中的查询语句
MongoDB 中的投影即查询指定的字段,而不是直接查询文档的全部字段。比如说某个文档中有 5 个字段,而我们只需要其中的 3 个字段,那么就可以使用 MongoDB 中的投影来指定需要查询的 3 个字段。在《MongoDB查询文档》一节中我们介绍的 find() 方法,在使用 find() 方法时,如果不设置其中的第二个参数,那么在查询时将返回文档中的所有字段,想要限制要查询的字段
2.14 limit()与skip()函数:限制查询条数
当我们在使用 find() 方法查询集合中文档的时侯,会一次性的将所有符合条件的文档全部展示出来,但我们可能并不需要全部的查询结果(比如在做分页处理时),这时该怎么做呢?下面就来介绍一下。 limit() 方法 MongoDB 中要限制查询的
2.15 MongoDB排序:sort()方法
要在 MongoDB 中对查询到的文档进行排序,您可以使用 sort() 方法,该方法的语法格式如下: db.collection_name.find().sort({key:1}) 其中 key 用来定义要根据那个字段进行排序,后面的值
第三章 MongoDB 运维管理
3.1 MongoDB中的索引
索引是特殊的数据结构,存储在一个方便遍历和读取的数据集合中。索引在任何数据库中都非常重要,通过使用索引,可以大大提高查询语句的执行效率。举个简单的例子,假如您有一个集合,其中包含了数千甚至上万个没有索引的文档,当我们在集合中查找某个文档时,MongoDB 需要扫描整个集合来寻找所需的文档,这种扫描效率极低,特别是在处理大量的数据时,可能需要花费几
3.2 MongoDB中的聚合查询
MongoDB 中的聚合操作用来处理数据并返回计算结果,聚合操作可以将多个文档中的值组合在一起,并可对数据执行各种操作,以返回单个结果,有点类似于 SQL 语句中的 count(*)、group by 等。 aggregate() 方
3.3 MongoDB中的复制(副本集)
MongoDB 中的复制就是跨多个服务器同步数据的过程,复制提供了数据的冗余备份,在多个服务器中存储数据副本,以此来提高数据的可用性,并可以保证数据的安全性。另外,复制还可以防止数据丢失,因为复制允许您从硬件故障或服务中断的过程中恢复数据。 为什么使用复制 下面列举了几个使用复制的好处: 1.确保您数据的安全; 2.保障数据
3.4 MongoDB分片概念
分片是跨多台机器存储数据的过程,它是 MongoDB 满足数据增长需求的方法。随着数据的不断增加,单台机器可能不足以存储全部数据,也无法提供足够的读写吞吐量。通过分片,您可以添加更多计算机来满足数据增长和读/写操作的需求。为什么要分片? 1.在复制中,所有写操作都将转到主节点; 2.对延迟敏感的查询仍会转到主查询; 3.单个副本集限制为 12 个节点; 4.当活动数据集很大时,会出现内存不足
3.5 MongoDB备份和恢复
本节我们来介绍一下 MongoDB 中如何对数据进行备份与恢复。 数据备份 在 MongoDB 中我们可以使用 mongodump 命令来对 MongoDB 进行数据备份,该命令可以导出所有数据到指定
3.6 MongoDB监控运行状态
监控是 MongoDB 中最关键的管理活动之一,因为在 MongoDB 部署完成后,您必须时刻了解 MongoDB 的运行状况,保障 MongoDB 的正常运行。MongoDB 中提供了 mongostat 和 mongotop 两个命令来监控 MongoDB 的运行情况。 mongostat mongostat命令能够检查
第四章 MongoDB高级操作
4.1 Java如何操作MongoDB
MongoDB 不仅可以在命令行窗口(CMD)中运行,它还可以与编程语言配合使用,本节我们就来介绍一下在 Java 中如何使用 MongoDB。 环境配置 想要在 Java 程序中使用 MongoDB,需要确保您的电脑上已经安装了 MongoDB,并搭建好了 Java 的环境。您可以查看
4.2 PHP如何操作MongoDB
想要在 PHP 中使用 MongoDB,您需要为 PHP 安装 MongoDB 的驱动,您可以从 PHP 官网(https://pecl.php.net/package/mongodb)下载最新版的 MongoDB 驱动。下载成功后解压得到的压缩包,并将其中的 php_mongo.dll 文件移动到您的
4.3 MongoDB文档之间的关联
MongoDB 中的关系表示多个文档之间在逻辑上的相互联系,文档之间可以通过嵌入或引用来建立联系,这种联系可以是 1:1(1对1)、1:N(1对多)、N:1(多对1)、N:N(多对多)。例如我们要存储用户的收货地址,一个用户可以拥有多个收货地址,从而形成 1
4.4 MongoDB多表关联查询
在上一节中,为了在 MongoDB 中实现规范化的数据库结构,我们使用了引用式关系(也称为手动引用)的概念,在手动引用中,我们需要将被引用文档的 _id 存储在其他文档中。当文档中需要引用来自不同集合数据的情况下,我们可以使用 MongoDB 中的 DBRefs。 D
4.5 MongoDB覆盖索引查询
你可能听说过列索引是通过最大限度地减少查询所需的磁盘访问次数来优化查询性能的好方法。MongoDB 有一个字段索引的特定应用程序,称为覆盖索引查询(Covered Queries),其中查询的所有列都被进行索引。因为 MongoDB 不必检查除索引之外的任何文档,
4.6 MongoDB 查询分析
查询分析是衡量数据库和索引设计有效性的一个非常重要的方式。下面我们来介绍一下比较常用的 $explain 和 $hint 查询。 $explain $explain 运算符提供了有关查询、索引使用以及查询统计的相关信息,这在索引优化方面非常有用。《MongoDB覆盖索引查询》一节
4.7 MongoDB原子操作
维护原子性的推荐方法是保留所有相关信息,并将这些信息使用嵌入式文档的形式更新到文档中,这将确保单个文档的所有更新都是原子的。假设我们已经创建了一个名为 productDetails 的集合,并在其中插入了一个文档,如下所示: > db.productDetails.insert( ... { ... "product_name":
4.8 MongoDB中的高级索引
假如在 users 集合中插入以下文档: > db.users.insert( ... { ... "address": { ... "city": "Hebei", ... "country": "China", ..
4.9 MongoDB索引使用注意事项
本节我们来介绍以下使用索引时的一些限制和注意事项。 额外开销每个索引都会占用一些空间,并且在每次执行插入、更新和删除等操作时也需要对索引进行操作,导致额外的开销。因此,如果您很少将某个集合用于读取操作,最好不要在集合中使用索引。RAM 使用由于索引存储在 RAM(
4.10 MongoDB中的ObjectId
本节我们来介绍一下 MongoDB 中的 ObjectId 的组成,ObjectId 是一个 12 字节的 BSON 类型,具有以下结构: .前 4 个字节表示时间戳; .接下来的 3 个字节表示机器标识符; .紧接着的 2 个字
4.10 MongoDB中MapReduce命令
在用 MongoDB 查询时,若返回的数据量很大,或者做一些比较复杂的统计和聚合操作做花费的时间很长时,可以使用 MongoDB 中的 mapReduce 进行实现。mapReduce 是个灵活且强大的数据聚合工具,它的好处是可以把一个聚合任务分解为多个小的任务,分配到多个服务器上并行处理。在 MongoDB 中我们可以使用 mapReduce 命令来执行 mapReduce 操作
4.11 MongoDB全文检索
从 2.4 版本开始,MongoDB 开始支持全文检索功能,全文检索就是对文本中的每个词建立索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户,整个过程类似于通过字典中的检索字表查字的过程。目前,MongoDB
4.12 MongoDB如何使用正则表达式
在编程语言中,正则表达式可以使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。MongoDB 可以使用 $regex 操作符来设置匹配字符串的正则表达式,MongoDB 使用 PCRE(Perl 兼容的正则表达式)作为正则表达式语言。与文本搜索不同,您不需要执行任何配置或命令就可以直接使用正则表达式。
4.13 MongoDB管理工具RockMongo的使用
RockMongo 是一个 MongoDB 管理工具,您可以使用它来管理 MongoDB 服务、数据库、集合、文档、索引等等。它为阅读、编写和创建文档提供了一种非常友好的方式,类似于使用 PHP 开发的 MySQL 管理工具 PHPMyAdmin。 下载 RockMongo 您可以从 https://gitee.com/mirrors/rockmongo 或 https://git
4.14 MongoDB GridFS
GridFS 是 MongoDB 的一种规范,用于存储和检索大型文件,如图像、音频、视频等。GridFS 也是一种存储文件的文件系统,但其数据是存储在 MongoDB 集合中的,GridFS 甚至可以存储超过 16MB 的文件。在存储文件时 GridFS 可以将一个文件分为多个数据块,并将每
4.15 MongoDB固定集合(Capped Collections)
固定集合是具有固定大小的循环集合,遵循插入顺序,以支持高性能的创建、读取和删除操作。通过循环,当分配给集合的固定大小用完时,它将删除集合中最旧的文档,而不提供任何显式命令。如果更新导致文档大小增加,则固定集合会限制对文档的更新。由于固定集合是按磁盘存储的顺序存储文档的,因此可以确保文档大小不会增加磁盘上分配的大小。固定集合最适合存储日志信息、缓存数据或
4.16 MongoDB自动增长的实现
MongoDB 中没有像 SQL 中那样可以赋予某个字段自动递增的功能,默认情况下 MongoDB 的 _id 字段是系统自动生成的 12 字节的唯一标识,但是在某些情况下我们可能需要在 MongoDB 的某个字段上实现
读者评论
你还没登录,点击这里
登录
本书评论
点击加载更多评论
你可能对这些书也感兴趣
《.NET和RabbitMQ实战指南》
开始阅读
《Vue代码规范指南》
开始阅读
《Redis开发与运维教程》
开始阅读
《MongoDB权威指南》
开始阅读
《Vue3中文官方文档》
开始阅读
《区块链从入门到精通》
开始阅读
最近这些人在读这本书
nika
0 粉丝 | 0 关注
+加关注
1336037686
0 粉丝 | 0 关注
JAVA程序员
+加关注
lbemi
0 粉丝 | 0 关注
JAVA程序员
+加关注
FlowUs息流
0 粉丝 | 0 关注
木有我想要的标签
+加关注
aibilim
0 粉丝 | 1 关注
木有我想要的标签
+加关注
白笙枫客
1 粉丝 | 1 关注
.NET攻城狮
+加关注
清歌终南
0 粉丝 | 1 关注
.NET攻城狮
+加关注
春风初生
0 粉丝 | 0 关注
前端大咖
+加关注