之前很早时候,因为参加牛客的读书笔记活动,曾做过一定笔记和小实验,当时没得很深入的研究。现在打算腾出手来,好好的学习一番。
之前的笔记都是基于MongoDb的3.0x版本,比较老旧。目前来说,我打算用最近最新的MongoDB,版本是4.2.3。进行学习,目前工作中需要要用。
MongoDB 是一个基于分布式文件存储的文档数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
·
MongoDB现在挺友好,有永久免费的沙箱MongoDB云使用,提供学习,有8G很不错了。
现在博文并不打算用该处教怎么创建clusters,因为很简单。
进行简单的登录和注册后,就能看见自己的MongoDB云上数据库了。
以下两款GUI的MongoDB工具还不错,当然也可以选其他的。本次博文将以Studio 3T为主(因为它还在免费试用期,而且的确好用)。
下载页面。
Studio 3T是适用于Windows,Mac和Linux的用于MongoDB的专业GUI和IDE。 无论使用者是否具有MongoDB查询语言知识均可更快地浏览和管理数据,该工具可以用于构建查询,数据浏览,聚合和数据比较,导入/导出,代码生成等功能。
安装时,会让你选择哪一种你喜欢的界面,如下所示,我个人感觉哪一种都行,选择第二种更适合拥有高级mongoDB查询基础的人员,目前学习来说,先以第一种为主。
最后的界面如下所示。
是Studio3T的免费版本,说强大也算强大,说不强大也不强大。
相关学习使用地址,可以参考此处,以及此处。
morphia是现在大部分公司所用的进行mongoDB数据保存、查询的工具,,现在MongoDB已经将其挪到社区进行维护,github的地址请点击这里。它能让Java实体类到MongoDB文档的映射,透明地将Java实体映射到MongoDB文档并返回。
mongoDB在maven官方仓库,老式的在2017年1月最后更新到1.3.2。
<dependency>
<groupId>org.mongodb.morphiagroupId>
<artifactId>morphiaartifactId>
<version>1.3.2version>
dependency>
2018年底,MongoDB向社区贡献了Morphia,以维护和发展该项目。以下是更新后的maven引入:
<dependency>
<groupId>dev.morphia.morphiagroupId>
<artifactId>coreartifactId>
<version>1.4.1version>
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。
与morphia一起使用的是mondoDB的java 驱动器,用以和MongoDB进行同步。github地址请点击这里。
本次学习,打算先试水3.12.1
maven引用很简单了,就如下所示,打算先用3.12.1:
<dependency>
<groupId>org.mongodbgroupId>
<artifactId>mongo-java-driverartifactId>
<version>3.12.1version>
dependency>
本次安装的版本是MongoDB 4.2.3 社区版,下载地址。
然后双击运行即可,建议用自定义。
接下来都用默认值即可。
然后去到安装目录下的bin目录,双击mongo.exe。
可以试着输入下面的命令测试:
use tutorial
可以看见输出如下所示:
接下来插入一条数据试试。
db.users.insert({username:"yuyuntan"})
使用Studio3T进行连接,点击测试连接即可,因为是默认的,我这个测试连接是通过的。
刚刚创建的数据都存在了。
好了,再来回顾一下,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
用自己的密码替换中间
。
隐私问题,打码了密码。
然后对下面红线的进行鼠标双击。
就看见了。
首先要引入两个pom文件。
这里引入的分别是这两个:
<dependency>
<groupId>org.mongodb.morphiagroupId>
<artifactId>morphiaartifactId>
<version>1.3.2version>
dependency>
<dependency>
<groupId>org.mongodbgroupId>
<artifactId>mongo-java-driverartifactId>
<version>3.12.1version>
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
用自己的密码替换中间
。
mongoDB本篇主要是列举一些使用工具和如何使用这些资源,并且会进行代码的示例描述。不一定尽善尽美,希望能对看者也帮助。
[1] MongoDB window安装官方文档
[2] MongoDB菜鸟教程
[3] atlas官方文档