MongoDB 4系列(1)概述与安装和资源介绍

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本篇主要是列举一些使用工具和如何使用这些资源,并且会进行代码的示例描述。不一定尽善尽美,希望能对看者也帮助。

参考文献

[1] MongoDB window安装官方文档

[2] MongoDB菜鸟教程

[3] atlas官方文档

发布了189 篇原创文章 · 获赞 675 · 访问量 31万+

猜你喜欢

转载自blog.csdn.net/YuYunTan/article/details/105476520