MongoDB数据库(附源码)
概述
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通过基于角色的授权来授予对数据和命令的访问权限,并提供内置角色,以提供数据库系统中通常需要的不同访问级别。您还可以创建用户定义的角色。
数据库用户角色: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的安装包。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。3、MongoDB Compass安装
- 双击安装程序文件。
- 按照提示安装Compass。您可以选择Compass安装的目标。
- 安装后,Compass将启动并提示您配置隐私设置并指定更新首选项。
4、MongoDB Compass安装成功5、MongoDB连接
数据库基本操作
创建数据库
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
对用户的增删改查操作具体代码请看源码(往下翻一点点)
源码
GitHub:https://github.com/lhb124520/MongoDBDemo
码云:https://gitee.com/lhblearn/MongoDBDemo
还没有评论,来说两句吧...