概述

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。

Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

适用场景

主要场景如下:
1)网站实时数据处理。它非常适合实时的插入、更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
2)缓存。由于性能很高,它适合作为信息基础设施的缓存层。在系统重启之后,由它搭建的持久化缓存层可以避免下层的数据源过载。
3)高伸缩性的场景。非常适合由数十或数百台服务器组成的数据库,它的路线图中已经包含对MapReduce引擎的内置支持。

不适用的场景如下:
1)要求高度事务性的系统。
2)传统的商业智能应用。
3)复杂的跨文档(表)级联查询。

由于公司需要用到MongoDB数据库,所以从安装到使用,特别是访问权限控制,都亲自测试过,下面是我个人的一些经验之谈。

ps:虽然我这边写的都是亲身体验的,但是官方文档的很全,多结合一起看,收获很大的。

附上MongoDB官方文档地址
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/

MongoDB安装

废话不多说,mongodb网上的资料很多,就不一一累述了,直接操作

参照官网安装,https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/

安装前注意: 此教程是通过yum安装的,centos系统,MongoDB最新版本4.2

1、配置包管理系统(yum)
创建一个/etc/yum.repos.d/mongodb-org-4.2.repo文件,以便您可以使用yum以下命令直接安装MongoDB :

vi  /etc/yum.repos.d/mongodb-org-4.2.repo

然后复制下面配置,保存退出

[mongodb-org-4.2] 
name = MongoDB Repository 
baseurl = https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/ 
gpgcheck = 1 
enabled = 1 
gpgkey = https:// www.mongodb.org/static/pgp/server-4.2.asc

2、安装MongoDB包
要安装最新的稳定版MongoDB,请输入以下命令:

sudo yum install -y mongodb-org

3、安装完毕后修改配置文件:

vi /etc/mongod.conf

修改配置文件的 bind_ip, 默认是 127.0.0.1 只限于本机连接。所以安装完成后必须把这个修改为 0.0.0.0 ,远程没法连接!

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.

(可选)启用访问控制
详情见下一标题:启用访问控制

4、关闭防火墙

查看防火状态

systemctl status firewalld

暂时关闭防火墙

systemctl stop firewalld

永久关闭防火墙

systemctl disable firewalld

5、启动、停止、重启

MongoDB默认将数据文件存储在/var/lib/mongo目录,默认日志文件在/var/log/mongodb中。如果要修改,可以在 /etc/mongod.conf 配置中指定备用日志和数据文件目录。

启动命令:

sudo service mongod start

停止命令:

sudo service mongod stop

重启命令:

sudo service mongod restart

查看日志文件

cat /var/log/mongodb/mongod.log

检查是否启动成功

sudo chkconfig mongod on

6、使用

mongo

docker环境下安装MongoDB

环境ip:192.168.16.131

1、拉取官方的镜像

docker pull mongo

2、本地镜像列表里查到镜像

docker images mongo

3、运行容器

docker run -p 27017:27017 -v $PWD/db:/data/db -d mongo:latest

命令说明:
-p 27017:27017 :将容器的27017 端口映射到主机的27017 端口
-v $PWD/db:/data/db :将主机中当前目录下的db挂载到容器的/data/db,作为mongo数据存储目录

4、使用mongo镜像执行mongo 命令连接到刚启动的容器,主机IP为192.168.16.131

docker run -it mongo:latest mongo --host 192.168.16.131

5、查看容器启动情况

docker ps

6、进入容器
注意:容器id 和/bin/bash 中间有个空格,否则会报错。

docker exec -it 容器id /bin/bash

7、进入mongodb

mongo

8、退出容器

exit

启用访问控制(选填)

MongoDB具有3种认证方式:

  • 无密码访问(默认)
  • 账号密码访问
  • SCRAM访问

MongoDB 时间序列 与地理空间 mongodb时序数据库_NoSQL

MongoDB通过基于角色的授权来授予对数据和命令的访问权限,并提供内置角色,以提供数据库系统中通常需要的不同访问级别。您还可以创建用户定义的角色。

数据库用户角色:read、readWrite;
    数据库管理角色:dbAdmin、dbOwner、userAdmin;
    集群管理角色:clusterAdmin、clusterManager、4. clusterMonitor、hostManage;
    备份恢复角色:backup、restore;
    所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
    超级用户角色:root
    内部角色:__system

初次安装的MongoDB是不需要密码连接的,需要启动账号密码认证请查看以下步骤:

参考官方文档:
https://docs.mongodb.com/manual/tutorial/enable-authentication/

1、在没有访问控制的情况下启动MongoDB。

mongod --port 27017

2、连接到实例。

mongo --port 27017

3、创建用户管理员。

use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: passwordPrompt(), // or cleartext password
    roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
  }
)

4、使用访问控制重新启动MongoDB实例。

db.adminCommand( { shutdown: 1 } )
exit
mongod --auth --port 27017  --config /etc/mongod.conf

5、以用户管理员身份连接并进行身份验证。

mongo --port 27017  --authenticationDatabase "admin" -u "myUserAdmin" -p  "123456"

例外一种开启身份认证(未成功):
网上有设置mongod.conf的认证,但是我个人没有设置成功,可能因为格式或者缩进的问题,一直报错,这种方式仅供参考。

mongod.conf文件,找到 #security:改成下图所示,开启安全认证。
注意缩进,若是缩进不对可能导致后面服务重启报错

security:
    authorization: enabled

MongoDB图形化界面安装(Linux)

安装步骤参照官网:https://docs.mongodb.com/compass/current/install/

1、MongoDB Compass下载
官网下载安装包:https://www.mongodb.com/download-center/compass?jmp=docs

下载适用于Red Hat Enterprise Linux的最新版MongoDB Compass。MongoDB Compass安装程序是一个 .rpm包。社区版本免费,我们下载社区版的RedHat的安装包。

MongoDB 时间序列 与地理空间 mongodb时序数据库_MongoDB 时间序列 与地理空间_02

2、MongoDB Compass安装

sudo yum install mongodb-compass-1.17.0.x86_64.rpm

3、MongoDB Compass启动

mongodb-compass

MongoDB图形化界面安装(Windows)

1、系统要求

  • 64位版本的Microsoft Windows 7或更高版本。
  • MongoDB 3.6或更高版本。
  • Microsoft .NET Framework 4.5或更高版本。

如果您的系统上尚未安装.NET Framework,则Compass安装程序会提示您安装所需的最低版本.NET Framework。

2、MongoDB Compass下载
官网下载:https://www.mongodb.com/download-center/compass?jmp=docs

MongoDB Compass安装程序可以下载一个.exe或.msi包或.zip 存档。

下载最新版本的MongoDB Compass for Windows。

MongoDB 时间序列 与地理空间 mongodb时序数据库_非关系数据库_03

3、MongoDB Compass安装

  • 双击安装程序文件。
  • 按照提示安装Compass。您可以选择Compass安装的目标。
  • 安装后,Compass将启动并提示您配置隐私设置并指定更新首选项。

4、MongoDB Compass安装成功

MongoDB 时间序列 与地理空间 mongodb时序数据库_NoSQL_04

5、MongoDB连接

MongoDB 时间序列 与地理空间 mongodb时序数据库_MongoDB_05

数据库基本操作

创建数据库

use test

创建的数据库 test,并不在数据库的列表中, 要显示它,我们需要向 test数据库插入一些数据。

db.collection.insert({"name":"测试数据"})

查看数据库

show dbs;

查看数据库版本

db.version();

创建集合(表)

db.createCollection("collection")

查看集合(表)

show collections

插入文档(数据)

db.collection.insert({"name":"测试数据"})

查询文档(数据)

db.collection.find().pretty()

更新文档(数据)

db.collection.update({"name":"修改数据"})

删除文档(数据)

db.col.remove({"name":"修改数据"})

删除MongoDB

1、停止MongoDB
mongod通过发出以下命令来停止该过程:

sudo service mongod stop

2、删除包
删除以前安装的所有MongoDB软件包。

sudo yum erase $( rpm -qa | grep mongodb-org )

3、删除数据目录
删除MongoDB数据库和日志文件。

sudo rm -r / var / log / mongodb
sudo rm -r / var / lib / mongo

SpringBoot对MongoDB支持

springboot已经支持mongodb,只需要引用依赖就能使用。

pom.xml文件新增依赖项

<!--MongoDB数据库-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>

修改MongoDB连接

spring:
  application:
    name: spirng-boot-demo
  data:
    mongodb:
      host: 192.168.16.135
      port: 27017
      database: test

对用户的增删改查操作

MongoDB 时间序列 与地理空间 mongodb时序数据库_swagger_06