由于 MongoDB 没入门,我丢了一份实习工做

有时候不得不感慨一下,系统升级真的是好处多多,不只让我有机会重构了以前的烂代码,也知足了我积极好学的虚荣心。你看,Redis 入门了、Elasticsearch 入门了,此次又要入门 MongoDB,感受本身变秃的同时,也变强大了。java

小伙伴们在继续阅读以前,我必需要声明一点,我对 MongoDB 并无进行很深刻的研究,仅仅是由于要用,就学一下。但做为一名负责任的技术博主,我是花了心思的,这篇入门教程,小伙伴们读完后绝对会感到满意,忍不住点赞。git

固然了,小伙伴们遇到文章中有错误的地方,不要手下留情,能够组团过来捶我,但要保证一点,不要打脸,我怕毁容。程序员

0一、MongoDB 是什么

MongoDB 是一个基于分布式的文件存储数据库,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。github

以上引用来自于官方,不得不说,解释得文绉绉的。那就让我来换一种通俗的说法给小伙伴们解释一下,MongoDB 将数据存储为一个文档(相似于 JSON 对象),数据结构由键值对组成,相似于 Java 中的 Map,经过 key 的方式访问起来效率就高得多,对吧?这也是 MongoDB 最重要的特色。面试

MongoDB 提供了企业版(功能更强大)和社区版,对于咱们开发者来讲,拿社区版来学习和使用就足够了。MongoDB 的驱动包不少,常见的编程语言都有覆盖到,好比说 Java、JavaScript、C++、C#、Python 等等。mongodb

不少知名的互联网公司都在用 MongoDB,好比说谷歌、Facebook、eBay 等等。总之,值得信赖,小伙伴们放心入门,技多不压身啊,就当是给本身一次学习的机会。shell

0二、安装 MongoDB

MongoDB 针对不一样的操做系统有不一样的安装包,咱们这篇入门的文章就以 Windows 为例吧。数据库

官网下载地址以下:编程

www.mongodb.com/download-ce…bash

最新的版本是 4.2.6,我选择的是安装版,msi 格式的,264M 左右。下载完就能够双击运行安装,傻瓜式的。

建议选择「Custom」自定义安装,以下图所示。

以服务模式运行,并配置好数据和日志目录,以下图所示。

建议取消勾选安装 MongoDB 的图形化客户端工具,不然安装速度慢到你想要去扣会手机。

安装完成后进入到 bin 目录下,双击 mongo.exe 文件就能够链接到 MongoDB 服务了。

1)MongoDB 的默认端口号为 27017。

2)MongoDB 的版本号为 4.2.6。

默认会链接到 test 文档(至关于数据),能够经过 db 命令查询。

还能够运行一些简单的算术运算:

那如何中止服务呢?能够直接点击右上角的 X 号——粗暴、壁咚。

0三、安装 Robo 3T

Robo 3T 提供了对 MongoDB 和 SCRAM-SHA-256(升级的 mongo shell)的支持,是一款轻量级的 MongoDB 客户端工具。

下载地址以下:

robomongo.org/download

最新的版本是 1.3,选择 zip 格式进行下载,23M 左右。下载完成后,解压就好了。

包目录再也不一一解释了,进入 bin 目录下,双击运行 robo3t.exe 文件,启动 Robo 3T 客户端。

点击「Create」建立一个 MongoDB 的链接。

链接成功后,就能够操做 MongoDB 了。

(不过,小伙伴们这时候也不太知道该怎么操做,毕竟 MongoDB 的一些相关概念还不清楚,无从下手啊)

0四、MongoDB 的相关概念

随着互联网的极速发展,用户数据也愈来愈庞大,NoSQL 数据库的发展可以很好地处理这些大的数据,MongoDB 是 NoSQL 数据库中的一个典型的表明。

说到这,可能有些小伙伴们还不知道 NoSQL 是啥意思,我简单解释一下。NoSQL 可不是没有 SQL 的意思,它实际的含义是 Not Only SQL,也就是“不只仅是 SQL”,指的是非关系型数据库,和传统的关系型数据库 MySQL、Oracle 不一样。

MongoDB 命名源于英文单词 humongous,意思是「巨大无比」,能够看得出 MongoDB 的野心。MongoDB 的数据以相似于 JSON 格式的二进制文档存储:

{
    name: "沉默王二",
    age: 18,
    hobbies: ["写做", "敲代码"]
}
复制代码

在进行下一步以前,须要先来理解 MongoDB 中的几个关键概念,好比说什么是集合,什么是文档,什么是字段等等。MongoDB 虽然是非关系型数据库,但和关系型数据库很是类似。

看完上面这幅图(图片来源于好朋友 macrozheng 的文章),是否是瞬间就清晰了?

0五、在 Java 中使用 MongoDB

有些小伙伴可能会问,“二哥,我是一名 Java 程序员,我该如何在 Java 中使用 MongoDB 呢?”这个问题问得好,这就来,这就来。

第一步,在项目中添加 MongoDB 驱动依赖:

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver-sync</artifactId>
    <version>4.0.3</version>
</dependency>
复制代码

第二步,新建测试类 MongoDBTest:

public class MongoDBTest {
    public static void main(String[] args) {
        MongoClient mongoClient = MongoClients.create();
        MongoDatabase database = mongoClient.getDatabase("mydb");
        MongoCollection<Document> collection = database.getCollection("test");

        Document doc = new Document("name", "沉默王二")
                .append("age", "18")
                .append("hobbies", Arrays.asList("写做", "敲代码"));
        collection.insertOne(doc);

        System.out.println("集合大小:" +collection.countDocuments());

        Document myDoc = collection.find().first();
        System.out.println("文档内容:" + myDoc.toJson());
    }
}
复制代码

1)MongoClient 为 MongoDB 提供的客户端链接对象,不指定主机名和端口号的话,默认就是“localhost”和“27017”。

若是小伙伴想自定义主机名和端口号的话,也能够经过字符串的形式:

MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");
复制代码

是否是感受和 MySQL 的链接字符串挺像的?

2)getDatabase() 方法用于获取指定名称的数据库,若是数据库已经存在,则直接返回该 DB 对象(MongoDatabase),不然就建立一个再返回(省去了判空的操做,很是人性化)。

3)getCollection() 方法用于获取指定名称的文档对象,若是文档已经存在,则直接返回该 Document 的集合对象,不然就建立一个再返回(和 getDatabase() 方法相似)。

有了文档对象(MongoCollection)后,就能够往里面添加具体的文档内容了。

Document doc = new Document("name", "沉默王二")
                .append("age", "18")
                .append("hobbies", Arrays.asList("写做", "敲代码"));
复制代码

Document 对象来源于 org.bson 包下,能够在实例化该对象以后经过 append() 方法添加对应的键值对,很是方便,就像 String 类的 append() 方法同样。

有了文档对象后,就能够经过 insertOne() 方法将文档添加到集合当中了。

4)countDocuments() 方法用于获取集合中的文档数目。

5)要查询文档,能够经过 find() 方法,它返回一个 FindIterable 对象,first() 方法能够返回当前集合中的第一个文档对象。

好了,来看一下程序的输出结果:

集合大小:1
文档内容:{"_id": {"$oid": "5ebcaa76465cab3f18b93e1a"}, "name": "沉默王二", "age": "18", "hobbies": ["写做", "敲代码"]}
复制代码

彻底符合咱们的预期,perfect!

也能够经过 Robo 3T 查看“mydb”数据库,结果以下图所示。

0六、鸣谢

好了,我亲爱的小伙伴们,以上就是本文的所有内容了,是否是看完后很想实操一把 MongoDB,赶快行动吧!若是你在学习的过程当中遇到了问题,欢迎随时和我交流,虽然我也是个菜鸟,但我有热情啊。

另外,若是你想写入门级别的文章,这篇就是最好的范例。

我是沉默王二,一枚有趣的程序员。若是以为文章对你有点帮助,请微信搜索「 沉默王二 」第一时间阅读,回复【666】更有我为你精心准备的 500G 高清教学视频(已分门别类)。

本文 GitHub 已经收录,有大厂面试完整考点,欢迎 Star。

原创不易,莫要白票,请你为本文点个赞吧,这将是我写做更多优质文章的最强动力。

相关文章
相关标签/搜索