千家信息网

非关系数据库------MongoDB的安装与使用

发表于:2024-12-13 作者:千家信息网编辑
千家信息网最后更新 2024年12月13日,MongoDB概述MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复
千家信息网最后更新 2024年12月13日非关系数据库------MongoDB的安装与使用

MongoDB概述

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

MongoDB特点

面向集合存储,易存储对象类型的数据;模式自由、支持查询、支持动态查询;支持完全索引,包含内部对象;支持复制和故障恢复;使用高效的二进制数据存储,包括大型对象(如视频等);自动处理碎片,以支持云计算层次的扩展性;支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言;文件存储格式为BSON(一种JSON的扩展);可通过网络访问。

在Linux安装MongoDB

#配置yum源仓库cd /etc/yum.repos.d/vim mongodb-org.repo[mongodb-org]name=MongoDB Repositorybaseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/gpgcheck=1enabled=1gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc#安装 MongoDByum install mongodb-org -y#修改配置文件vim /etc/mongod.conf#修改第30行的监听地址bindIp: 0.0.0.0#开启服务systemctl start mongod.service#关闭防火墙和安全功能systemctl stop firewalld.service setenforce 0#查看服务端口状态netstat -ntap | grep mongod#复制配置文件,以开启多实例cp -p /etc/mongod.conf /etc/mongod2.conf #修改配置文件vim /etc/mongod2.conf#第10行,修改日志文件目录path: /var/log/mongodb/mongod2.log#第14行,修改数据存储目录dbPath: /data/mongodb/mongo#第29行,修改服务端口号port: 27018#创建实例的目录和日志文件mkdir -p /data/mongodbcd /data/mongodb/mkdir mongotouch mongod2.log#目录授权chmod 777 mongod2.log#启动实例mongod -f /etc/mongod2.conf #指定实例的端口mongo --port 27018#查看服务端口状态netstat -ntap

MongoDB 基础操作

#查看版本db.version() #查看数据库    show dbs;   #查看当前数据库机器的连接地址      db.getMongo()  #显示集合操作命令 db.集合名.help     #显示用户show users       

增删改查

use school;                       #打开school数据库, 不存在会创建,不建立集合又会删除db.createCollection('info')        #创建集合db.info.insert({"id":1,"name":"zhangsan","hobby":["game","talk"]})      #添加数据db.info.find()                    #查看info集合中所有文档show collections                  #查看数据库中所有集合db.info.update({"id":10},{$set:{"name":"tom"}})     #更改数据db.info.remove({"id":2})         #移除info集合中的id2的数据db.info.drop()                   #删除info集合db.dropDatabase()               #删除数据库  先use到要删的数据库里在删db.info.count()                 #统计有多少条数据

MongoDB 数据类型

String#字符串,最常用,必须是utf-8Boolean#布尔值,true 或者falseInteger#整数型Double#浮点型Arrays#数组或者列表,多个值存储到一个键Object#用于嵌入文档,即一个值为一个文档Null#存储null值Binary Data #二进制数据,用于存储二进制数据Date#存储当前日期或时间unix时间格式

查看数据类型

a=db.info.findOne({"id":1})   #查找指定记录并赋予别名aypeof(a.id)                  #查看属性类型

备份与恢复数据

导出工具:mongoexport

导入工具:mongoimport

常见选项:

-h,--host :代表远程连接的数据库地址,默认连接本地Mongo数据库;--port:代表远程连接的数据库的端口,默认连接的远程端口27017;-u,--username:代表连接远程数据库的账号,如果设置数据库的认证,需要指定用户账号;-p,--password:代表连接数据库的账号对应的密码;-d,--db:代表连接的数据库;-c,--collection:代表连接数据库中的集合;-f, --fields:代表集合中的字段,可以根据设置选择导出的字段;--type:代表导出输出的文件类型,包括csv和json文件;-o, --out:代表导出的文件名;-q, --query:代表查询条件;--skip:跳过指定数量的数据;--limit:读取指定数量的数据记录;--sort:对数据进行排序,可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列,如sort({KEY:1})。
for(var i=1;i<=100;i++)db.info.insert({"id":i,"name":"jack"+i})    #循环写入100条数据mongoexport -d school -c info -o /opt/info.json        #导出指定文件mongoimport -d school -c info1 --file /opt/info.json  #导入到info1集合mongoexport -d school -c info1 -q '{"id":{"$eq":10}}' -o /opt/top10.json    #查询指定第10行条件导出

备份与恢复

备份工具:mongodump

恢复工具:mongorestore

常用选项:

-h 指定Mongodb所在服务器的地址也可以指定端口(例:-h 127.0.0.1:27017)-d :需要备份的数据库;-o :备份数据存放的目录 该目录需提前创建
mkdir /backup                       #创建存放目录mongodump -d school -o /backup/     #备份school数据库mongorestore -d school1 --dir=/backup/school    #恢复到school1数据库

复制数据库:

db.copyDatabase("school","school2")     #复制数据库school 到school2中

克隆数据库:

把数据库school的info集合 克隆到实例2先进入实例2的MongoDB
mongo --port 27018db.runCommand({"cloneCollection":"school.info","from":"192.168.142.152:27017"}) 

安全管理

创建管理用户;启动时必须指定 auth=true;可以将用户分配角色;内置数据库用户角色: read 、 readWrite;数据库管理员角色: dbAmin 、 dbOwner 、 userAdmin;超级用户管理员用户:root
#编辑配置文件vim /etc/mongod.confauth=true   #添加指定use admindb.createUser({"yj":"root","pwd":"123","roles":["root"]})#创建用户yj  密码123  分配root角色db.auth("root","123")     #验证用户

进程管理

查看当前正在运行的进程: db.currentOp()终止正在运行的进程: db.killOp(opid值)
 db.currentOp()      #查看当前运行进程db.killOp(4872) #终止4872进程

MongoDB 监控

MongoDB提供一些内置工具可以监测数据库的状态信息查看数据库实例的状态信息: db.serverStatus()查看数据库的统计信息: db.stats()此外也可以通过web界面查看系统监控信息需要在配置文件中加入
##编辑配置文件vim /etc/mongod.conf#开启http服务httpinterface=true
0