部署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
    评论
未来社区的建设背景和需求分析指出,随着智能经济、大数据、人工智能、物联网、区块链、云计算等技术的发展,社区服务正朝着数字化、智能化转型。社区服务渠道由分散向统一融合转变,服务内容由通用庞杂向个性化、服务导向转变。未来社区将构建数字化生态,实现数据在线、组织在线、服务在线、产品智能和决策智能,赋能企业创新,同时注重人才培养和科研平台建设。 规划设计方面,未来社区将基于居民需求,打造以服务为中心的社区管理模式。通过统一的服务平台和应用,实现服务内容的整合和优化,提供灵活多样的服务方式,如推送式、订阅式、热点式等。社区将构建数据与应用的良性循环,提高服务效率,同时注重生态优美、绿色低碳、社会和谐,以实现幸福民生和产业发展。 建设运营上,未来社区强调科学规划、以人为本,创新引领、重点突破,统筹推进、整体提升。通过实施院落+社团自治工程,转变政府职能,深化社区自治法制化、信息化,解决社区治理中的重点问题。目标是培养有活力的社会组织,提高社区居民参与度和满意度,实现社区治理服务的制度机制创新。 未来社区的数字化解决方案包括信息发布系统、服务系统和管理系统。信息发布系统涵盖公共服务类和社会化服务类信息,提供政策宣传、家政服务、健康医疗咨询等功能。服务系统功能需求包括办事指南、公共服务、社区工作参与互动等,旨在提高社区服务能力。管理系统功能需求则涉及院落管理、社团管理、社工队伍管理等,以实现社区治理的现代化。 最后,未来社区建设注重整合政府、社会组织、企业等多方资源,以提高社区服务的效率和质量。通过建立社区管理服务综合信息平台,提供社区公共服务、社区社会组织管理服务和社区便民服务,实现管理精简、高效、透明,服务快速、便捷。同时,通过培育和发展社区协会、社团等组织,激发社会化组织活力,为居民提供综合性的咨询和服务,促进社区的和谐发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值