您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件开发专栏 > 数据库 > 正文

免费电子书|MongoDB入门到实践

发表于:2018-12-05 作者:javafirst 来源:今日头条

都说技术在飞速发展,新技术也在不断涌现,但我认为,其实程序员所用的基础技术的发展是相对缓慢的,你可以好几年不学习但还能混得下去。令人惊讶的其实是成熟技术的被替换速度。就像在一夜之间,那些长期稳定成熟的技术发现它们不再被开发者关注。

最好的例子就是 NoSQL 技术的发展,以及它对稳定的关系型数据库市场的蚕食。那什么是NOSQL?其实它是一个很宽泛的概念,不同的人对它有不同的见解。就个人而言,我通常认为它是数据存储系统的一部分。换而言之,NoSQL的好处是让你的持久层不需要一个独立的系统。

MongoDB是最受欢迎的NoSQL数据库之一,你可能想知道MongoDB 是不是适用于这一切。作为一个面向文档数据库,MongoDB 是最通用的 NoSQL 解决方案之一。它可以看成是关系型数据库的代替方案。和关系型数据库一样,它也可以和其他的 NoSQL 解决方案案搭配在一起。关于MongoDB的一切都会在这本书提及到:

本书大部分篇幅会用来关注的MongoDB的核心功能,从基础概念到掌握查找、数据建模以及性能和工具等,而且这本书已经有中文、俄语、意大利语、西班牙语、日语和德语的翻译。(中文GitHub地址:https://github.com/ilivebox/the-little-mongodb-book/blob/master/zh-cn/mongodb.markdown)

关于作者

Karl Seguin 在多领域有着丰富经验,他是 .NET 和 Ruby 的开发专家。他也参与贡献 OSS 项目, 还是技术文档撰写人而且偶尔做做演讲。MongoDB 方面,他是 C# MongoDB 库 NoRM 的核心开发者,写有互动入门教程 mongly 和 Mongo Web Admin。他用 MongoDB,为休闲游戏开发者写了一个免费服务, mogade.com。Karl 还编写了 《The Little Redis Book 1》

下面我们详细了解一下这本书都为读者讲解了哪些内容:

MongoDB安装

MongoDB 很容易安装和运行,只需要花几分钟把所有的东西运行起来。

先打开官方下载页面 ,从你选择的操作系统下面的第一行(推荐稳定版本)下载二进制文件。根据开发实际,你可以选择 32位 或者 64位。

解压缩文件 (随便你放哪) 然后进入 bin 子目录。现在还不要执行任何命令,只要记住 mongod 用来打开服务进程,mongo 打开客户端 shell - 大部分时间我们将要使用这两个命令。

在 bin 子目录下创建一个文本文件,命名为 mongodb.config。

在 mongodb.config 中添加一行:dbpath=PATH_TO_WHERE_YOU_WANT_TO_STORE_YOUR_DATABASE_FILES。比如,在 Windows 你可以写 dbpath=c:mongodbdata ,在 Linux 可能是dbpath=/var/lib/mongodb/data。

确保你指定的 dbpath 确实存在。

执行 mongod ,带上参数 --config /path/to/your/mongodb.config 。

以 Windows 用户为例,如果你解压下载文档到 c:mongodb ,并且你创建了c:mongodbdata ,那么在 c:mongodbinmongodb.config 你要指定dbpath=c:mongodbdata。 然后你可以在 CMD 执行 mongod 如下命令行c:mongodbinmongod --config c:mongodbinmongodb.config。

现在你的MongoDB应该已经安装好并可以运行起来了,现在你可以执行 mongo (没有 d) ,链接 shell 到你的服务器上了。尝试输入 db.version() 来确认所有都正确执行了。你应该能拿到一个已安装的版本号。

阅读路线

除了前面介绍的MongoDB安装,还包括以下章节:

第一章:基础知识

这一章能让你掌握学习MongoDB所必须的基础知识,介绍了 insert 和 remove 命令 (完整版也没比我们介绍的多什么)。 我们还介绍了 find 以及了解了 MongoDB selectors 是怎么一回事。

第二章 - 更新

本章中我们介绍了集合的基本 CRUD 操作。我们详细讲解了 update 及它的三个有趣的行为。 首先,如果你传 MongoDB 一个文档但是不带更新操作, MongoDB 的 update 会默认替换现有文档。因此,你通常要用到 $set 操作 (或者其他各种可用的用于修改文档的操作)。 其次, update 支持 upsert 操作,当你不知道文档是否存在的时候,非常有用。 最后,默认情况下, update 只更新第一个匹配文档,因此当你希望更新所有匹配文档时,你要用 multi 。

第三章 - 掌握查询

本章让你更加熟练使用 mongo shell 以及理解 MongoDB 的基本原则,还讲了一些我们后面章节会用到的或是非常特殊情况才用的命令。

第四章 - 数据建模

本章目标是提供一些对你在 MongoDB 中数据建模有帮助的指导,让你体会在一个面向文档系统中建模,和在面向关系世界中建模,是不一样的,但也没多少不同。

第五章 - MongoDB 适用场景

本章主要围绕MongoDB适用的场景展开,大多数情况下,可以取代关系型数据库。它更简单更直接;更快速并且通常对应用开发者的约束更少。

第六章 - 数据聚合

在这章中我们介绍了 MongoDB 的 聚合功能(aggregation capabilities)。 一旦你理解了聚合管道(Aggregation Pipeline)的构造,它还是相对容易编写的,并且它是一个聚合数据的强有力工具。 MapReduce 更难理解一点,不过它强力无边,就像你用 JavaScript 写的代码一样。

第七章 - 性能和工具

在这章中我们介绍了 MongoDB 的各种命令,工具和性能细节。我们没有涉及所有的东西,不过我们已经把常用的都看了一遍。MongoDB 的索引和关系型数据库中的索引非常类似,其他一些工具也一样。不过,在 MongoDB 中,这些更易于使用。

写在最后

本书被许多读者作为MongoDB的入门书,通过本书,你可以掌握将MongoDB运用到实际项目的能力,当然,MongoDB的知识远不止这些,如果可以,还应该配合MongoDB的官方文档进行学习