MongoDB 4系列概述与安装和资源介绍
Posted YuYunTan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB 4系列概述与安装和资源介绍相关的知识,希望对你有一定的参考价值。
文章目录
MongoDB 4 系列(1)概述与安装
前言
之前很早时候,因为参加牛客的读书笔记活动,曾做过一定笔记和小实验,当时没得很深入的研究。现在打算腾出手来,好好的学习一番。
之前的笔记都是基于MongoDb的3.0x版本,比较老旧。目前来说,我打算用最近最新的MongoDB,版本是4.2.3。进行学习,目前工作中需要要用。
概述
MongoDB 是一个基于分布式文件存储的文档数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
·
主要特点
- MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。
- 你可以在MongoDB记录中设置任何属性的索引 (如:FirstName=“Sameer”,Address=“8 Gandhi Road”)来实现更快的排序。
- 你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。
- 如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。
- Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
- MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。
- Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。
- Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。
- Map函数和Reduce函数是使用javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。
- GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。
- MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。
- MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,php,C#等多种语言。
- MongoDB安装简单。
mongoDB的云库
MongoDB现在挺友好,有永久免费的沙箱MongoDB云使用,提供学习,有8G很不错了。
现在博文并不打算用该处教怎么创建clusters,因为很简单。
进行简单的登录和注册后,就能看见自己的MongoDB云上数据库了。
MongoDB资源
以下两款GUI的MongoDB工具还不错,当然也可以选其他的。本次博文将以Studio 3T为主(因为它还在免费试用期,而且的确好用)。
下载页面。
Studio 3T
Studio 3T是适用于Windows,Mac和Linux的用于MongoDB的专业GUI和IDE。 无论使用者是否具有MongoDB查询语言知识均可更快地浏览和管理数据,该工具可以用于构建查询,数据浏览,聚合和数据比较,导入/导出,代码生成等功能。
安装时,会让你选择哪一种你喜欢的界面,如下所示,我个人感觉哪一种都行,选择第二种更适合拥有高级mongoDB查询基础的人员,目前学习来说,先以第一种为主。
最后的界面如下所示。
Robo 3T
是Studio3T的免费版本,说强大也算强大,说不强大也不强大。
morphia
morphia是现在大部分公司所用的进行mongoDB数据保存、查询的工具,,现在MongoDB已经将其挪到社区进行维护,github的地址请点击这里。它能让Java实体类到MongoDB文档的映射,透明地将Java实体映射到MongoDB文档并返回。
mongoDB在maven官方仓库,老式的在2017年1月最后更新到1.3.2。
<dependency>
<groupId>org.mongodb.morphia</groupId>
<artifactId>morphia</artifactId>
<version>1.3.2</version>
</dependency>
2018年底,MongoDB向社区贡献了Morphia,以维护和发展该项目。以下是更新后的maven引入:
<dependency>
<groupId>dev.morphia.morphia</groupId>
<artifactId>core</artifactId>
<version>1.4.1</version>
</dependency>
移交到社区后,发展到博文现在,当前的版本已经到了2.0.0版本。
1.4.0 的版本主要是包名和Maven坐标名的改变,大致实现功能和1.3.2相同。到了1.5.x已经更改了许多,把Option类相关的引入的内容都标记为弃用,以此简化,还做了很多更改,是为了2.0的过渡和未来的更新。
2.0的目标是为了精简和简单化,已经拥抱java 11及以上的版本,而且引入更流畅的API,更新了映射器等等。
为了学习所用,目前打算采用的坐标名为org.mongodb.morphia的项目,即1.3.2。
MongoDB Java Drivers
与morphia一起使用的是mondoDB的java 驱动器,用以和MongoDB进行同步。github地址请点击这里。
本次学习,打算先试水3.12.1
maven引用很简单了,就如下所示,打算先用3.12.1:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.12.1</version>
</dependency>
Windows安装mongoDB
本次安装的版本是MongoDB 4.2.3 社区版,下载地址。
然后双击运行即可,建议用自定义。
接下来都用默认值即可。
然后去到安装目录下的bin目录,双击mongo.exe。
可以试着输入下面的命令测试:
use tutorial
可以看见输出如下所示:
接下来插入一条数据试试。
db.users.insert(username:"yuyuntan")
Studio3T连接mongoDB
使用Studio3T进行连接,点击测试连接即可,因为是默认的,我这个测试连接是通过的。
然后就可以看见如下所示:
刚刚创建的数据都存在了。
连接altas云库
好了,再来回顾一下,altas。
当你创建你的altas集群后,我们要怎么连接,下面教了。
先点击CONNECT按钮。
这里点击后会弹出页面框。
这个地方是加入你当前IP地址入白名单,个人认为为了简单化,就加0.0.0.0。
接着创建用户名和密码。
接下来就通知你创建成功了用户,接下来选择连接的方式。
接下来先选第一个
看见中间让你复制的了么,先把你现在打开的mongoDB的exe先关闭。
然后还在bin目录下,输入那个可复制的命令。
mongo "mongodb+srv://cluster0-cgkii.mongodb.net/test" --username yuyuntan
然后输入密码就可以了,如果密码不正确是打不开的。
接着回到页面,就可以看见连接数。
接着,如果我要Studio3T也连接上去,再继续点击CONNECT按钮。
选择中间的这个。
接着选择语言,我选java,3.6及以上。
复制后得到:
mongodb+srv://yuyuntan:<password>@cluster0-cgkii.mongodb.net/test?retryWrites=true&w=majority
用自己的密码替换中间 <password>
。
隐私问题,打码了密码。
然后对下面红线的进行鼠标双击。
就看见了。
java 代码连接altas云库
首先要引入两个pom文件。
这里引入的分别是这两个:
<dependency>
<groupId>org.mongodb.morphia</groupId>
<artifactId>morphia</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.12.1</version>
</dependency>
连接的代码如下所示:
MongoClientOptions.Builder builder = MongoClientOptions.builder()
// 设置最大连接数
.connectionsPerHost(10)
// 连接超时时间
.connectTimeout(10_000)
// 设置socket连接超时时间
.socketTimeout(20_000)
// 设置是否启用游标
.cursorFinalizerEnabled(true)
// 描述副本集的读取行为
.readPreference(ReadPreference.primary());
// 创建mongo client 连接的uri资源
MongoClientURI uri = new MongoClientURI(connectUrl,builder);
MongoClient mongoClient = new MongoClient(uri);
// 读取的数据库名
String databaseName = "tutorial";
// use tutorial
MongoDatabase db = mongoClient.getDatabase(databaseName);
// db.getCollection("users")
MongoCollection<Document> users = db.getCollection("users");
// db.getCollection("users").find()
MongoCursor cursor = users.find().cursor();
while (cursor.hasNext())
System.out.println(cursor.next());
其中connectUrl就是
mongodb+srv://yuyuntan:<password>@cluster0-cgkii.mongodb.net/test?retryWrites=true&w=majority
用自己的密码替换中间 <password>
。
最后输出结果如下所示:
总结
mongoDB本篇主要是列举一些使用工具和如何使用这些资源,并且会进行代码的示例描述。不一定尽善尽美,希望能对看者也帮助。
参考文献
[2] MongoDB菜鸟教程
[3] atlas官方文档
以上是关于MongoDB 4系列概述与安装和资源介绍的主要内容,如果未能解决你的问题,请参考以下文章