部署MongoDB 与基本使用、备份

MongoDB介绍
介于关系数据库和非关系数据库之间的产品
–一款基于分布式文件存储的数据库,旨在为WEB应用提供可扩展的高性能数据存储解决方案
– 将数据存储为一个文档(类似与JSON对象),数据结构有键值(key=value)对组成,用硬盘存储数据
–支持丰富的查询表达,可以设置任何属性的索引
–支持副本集,分片
在这里插入图片描述

表=====》 集合
记录===》 文档

搭建MDB服务
装包
mkdir /usr/local/mongodb
tar -xf mongodb-linux-x86_64-rhel70-3.6.3.tgz
cd mongodb-linux-x86_64-rhel70-3.6.3/
cp -r bin /usr/local/mongodb/
cd /usr/local/mongodb/
mkdir -p etc log data/db

创建配置文件
vim /usr/local/mongodb/etc/mongodb.conf
fork=true //守护进程方式运行
logpath=/usr/local/mongodb/log/mongod.log //指定日志文件目录
logappend=true //追加方式记录日志信息
dbpath=/usr/local/mongodb/data/db //数据库目录
port=27050
bind_ip=192.168.4.50
启动服务
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/mongodb.conf
查看进程
ps -C mongod
查看端口
ss -nutlp | grep mongod
停止服务
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/mongodb.conf --shutdown

连接服务
/usr/local/mongodb/bin/mongo
指定服务使用的IP与端口号
port=27050
bind_ip=192.168.4.50
连接服务
/usr/local/mongodb/bin/mongo --host 192.168.4.50 --port 27050
设置别名(vim /root/.bashrc / etc/bashrc)
alias mdbstart=’/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/mongodb.conf’
alias mdbstop=’/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/mongodb.conf --shutdown’
mdbstart (启动)
mdbstop (停止)

数据库管理
查看、创建、切换、删除库
show dbs //查看已有的库
db //显示当前所在库
use 库名 //切换库,若不存在则创建库并切换
show tables 或 show collections //查看库下集合
db.dropDatabase() //删除当前所在库

数据库名称规范
–不能是空字符串(“”)
–不得含有‘’ (空格) . $ / \ \0 (空字符)
–应去啊吧不消协
–最多64字节

集合管理命令

1)查看集合
use game
switched to db game

show tables
2)创建集合,集合不存在时,自动创建并添加文档
db.t1.save({name:“tom”,age:21,sex:“boby”})
db.t1.save({name:“tom”,sex:“girl”,school:“tarena”})
WriteResult({ “nInserted” : 1 })
3)删除所有集合
db.t1.drop()

集合命名的规范:
–不能是空字符串“”
–不能含有\0字符(空字符),此字符表示集合的结尾
–不能以“system."开头,这是为系统集合保留的q前缀
–用户创建的集合名字不能能含有保留字

文档管理命令
db.t1.find() 查看集合的所有文档
db.t1.count() 统计集合个数
db.集合.insert({name:“bob”}) 添加集合字段为name
db.t1.findOne() 只显示集合第一条
db.t1.find({name:“bob”}) 查找name 列值是bob 的文档
db.t1.remove({}) 删除集合的所有文档
db.t1.remove({mail : "12@qq.com"}) 删除匹配的所有文档

基本数据类型:
1)字符串string ,UTF-8字符串都可以表示为字符串类型的数据

db.t2.save({name:“张三”,性别:“girl”})
WriteResult({ “nInserted” : 1 })
2)布尔值bool,布尔类型有两个值true和flase
db.t2.save({name:“张三”,婚姻:“flase”})
WriteResult({ “nInserted” : 1 }
3)空null ,用于表示控值或者不存在的字段
db.t2.save({name:“张三”,存款:null})
WriteResult({ “nInserted” : 1 })

数值/数组array
数值:
–shell 默认使用64位浮点型数值。{x:3.14}或{x:3}
–NumberInt (4字节整数) {x:NumberInt(3)} //可以赋值为浮点数,默认保存整数部分)----4字节=32位
db.t2.save({i:NumberInt(7.1)})
WriteResult({ “nInserted” : 1 })
默认保存为整数7

db.t2.save({i:NumberInt(71)})
WriteResult({ “nInserted” : 1 })
–NumberLong (8字节整数) {x:NumberLOng(3)} //赋值时必须为整数,否则报错

数组array
–数据列表或数据集可以表示为数组
–{x:[“a”,“b”,“c”]}
db.t2.save({name:“pul”,by:[“a”,“b”,“c”,“d”]})
db.t2.find({name:“pul”});
{ “_id” : ObjectId(“5c21d3000db592f7d150cc5b”), “name” : “pul”, “by” : [ “a”, “b”, “c”, “d” ] }

代码/日期/对象
代码
–查询和文档中可以包含任何javascript代码
–{x:function(){/* 代码 /}}
db.t2.save({name:“张三”,code:function(){/
<??php echo "hello world" ?>*/}})
日期
–日期被存储为自新纪元依赖经过的毫秒数,不含时区
–{x:new Date()}
db.t2.save({x:new Date()})
{ “_id” : ObjectId(“5c21d9b40db592f7d150cc62”), “x” : ISODate(“2018-12-25T07:18:12.091Z”) }

对象 ,在插入文档时,数据库会自动为每一条文档生成一个object id
–对象id是一个12字节的字符除啊,是文档的唯一标识
–{x:ObjectId()}
db.t2.save({stu_id:ObjectId(),name:“bob”,age:19})
db.t2.find({name:“bob”,age:19})
{ “_id” : ObjectId(“5c21db5a0db592f7d150cc64”), “stu_id” : ObjectId(“5c21db5a0db592f7d150cc63”), “name” : “bob”, “age” : 19 }

内嵌/正则表达式
内嵌:
–文档可以嵌套其他文档,被嵌套的文档作为值来处理
db.t2.save({book: {bname:“kkk”,worker:“jjj”,pay:9.9,wer:20} })

正则表达式:
–查询时,使用正则表达式作为限定条件
db.t2.save({x:/^KaTeX parse error: Expected 'EOF', got '}' at position 2: /}̲) db.t2.find({x…/})
{ “_id” : ObjectId(“5c21dd170db592f7d150cc66”), “x” : /^$/ }

数据导入导出
mongoexport
在这里插入图片描述

在这里插入图片描述

导出(mongoexport)
文件必须事先存在
cd /usr/local/mongodb/bin/
mkdir /mdb
./mongoexport --host 192.168.4.50 --port 27050 -d game -c t2 --type=csv -f name,age > /mdb/t1.csv
./mongoexport --host 192.168.4.50 --port 27050 -d game -c t2 --type=json > /mdb/t2.json

导入(mongoimport)
格式一:
mongoimport --host Ip --port 端口 -d 库名 -c 集合名 --type=json 目录名/文件名.json
格式二:
mongoimport --host Ip --port 端口 -d 库名 -c 集合名 --type=csv [–headerline] [–drop] 目录名/文件名.csv (–headerline 删除头部。忽略头部 --drop 删除库集合原先数据追加新数据)

/usr/local/mongodb/bin/mongoimport --host 192.168.4.50 --port 27050 -d userdb -c user --type=json /mdb/t2.json (注,导入的库与集合不存在则创建并导入。不能重复导入。因为数据Id 相同)

在这里插入图片描述

cd /usr/local/mongodb/bin/
./mongoimport --host 192.168.4.50 --port 27050 -d userdb -c t2 --type=csv -f user,old /mdb/t1.csv (会将文件中第一条信息也赋值为 user old)
cat /mdb/t1.csv
name,age
{ “_id” : ObjectId(“5c21eebf274b3bce4677ca95”), “user” : “name”, “old” : “age” }
./mongoimport --host 192.168.4.50 --port 27050 -d userdb -c t3 --type=csv --headerline /mdb/t1.csv (第一条信息不会赋值)
./mongoimport --host 192.168.4.50 --port 27050 -d userdb -c t2 --type=csv --headerline --drop /mdb/t1.csv (不加drop 则是追加数据。反之覆盖原数据)

将/etc/passwd 导入数据
cp /etc/passwd /root/
sed -i ‘s/?,/g’ /root/passwd
sed -i ‘1iname,passwd,uid,gid,comment,homedir,shell’ /root/passwd
./mongoimport --host 192.168.4.50 --port 27050 -d userdb -c t4 --type=csv --headerline /root/passwd
db.t4.find() [一次只能显示20行 按it 可以显示更多]

数据备份
备份数据所有库到当前目录下的dump 目录
mongodump 【–host ip 地址 --port 端口】
备份时指定备份的库和备份目录
mongodump 【–host ip --port 端口】 -d 数据库名 【-c 集合名】 -o 目录 (-c 指定备份。不加即备份库下所有)
mkdir /mbak
/usr/local/mongodb/bin/mongodump --host 192.168.4.50 --port 27050 -d userdb -c t3 -o /mbak (备份userdb 库下 t3 集合)
ls /mbak/userdb
t3.bson t3.metadata.json
/usr/local/mongodb/bin/bsondump /mbak/userdb/t3.bson (查看备份文件内容)
mkdir /mbak2
/usr/local/mongodb/bin/mongodump --host 192.168.4.50 --port 27050 -d userdb -o /mbak2
ls /mbak2/userdb/
t2.bson t3.bson t4.bson user.bson
t2.metadata.json t3.metadata.json t4.metadata.json user.metadata.json

数据恢复
db.t3.drop() (删除t3 集合)
/usr/local/mongodb/bin/mongorestore --host 192.168.4.50 --port 27050 -d userdb -c t3 /mbak/userdb/t3.bson

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值