Mongodb

MongoDB 基础
一、MongoDB 是什么?
MongoDB 是一个文档数据库同时也是非关系型数据库,为简化应用程序的开发与扩展而设计。比较适合存储大量的
没有规则、无序的数据。未经过处理的数据。
二、安装 MongoDB 1.创建文件夹上传包 2.解压到安装目录 并移动 3.创建数据存储目录和日志目录 4.启动 mongod 服务
mkdir -p /opt/soft/mongodb
tar xvf mongodb-linux-x86_64-rhel62-3.6.5.tgz
mv mongodb-linux-x86_64-rhel62-3.6.5 /usr/local/mongodb
cd /usr/local/mongodb
mkdir data
mkdir logs
cd /usr/local/mongodb/bin
./mongod –dbpath=/usr/local/mongodb/data –logpath=/usr/local/mongodb/logs/log.txt –fork #参数介绍:
#dbpath 数据存储路径
#logpath 日志存储路径 指向到一个文件
#fork 后台启动
#auth 权限开启
#bind_ip 指定绑定网卡 ip #可以通过进程和端口的方式检测是否启动成功
ps aux|grep mongod
netstat -lntp|grep mongod
三、MongoDB 客户端操作 1.登录客户端 2.查看所有数据库 3.切换数据库和获取当前数据库
四、MongoDB 配置 1.使用远程登录
使用一台 mongo 远程登录另外一台 mongo 2.限制登录
由于默认情况下不允许使用 ip 进行登录,所以需要解除限制
2.1 关闭 MongoDB
正常情况下不要 kill -9 mongod,使用 mongo 命令客户端里的关机命令
cd /usr/local/mongodb/bin
./mongo
show dbs
use dbname
db.getName()
mongo 远程的 ip
mongo 192.168.170.132
– 先登录到 MongoDB 然后切换 adim 用户
use admin
– 然后执行下面命令停止数据库
db.shutdownServer()
2.2 创建配置文件 #创建一个文件夹
/usr/local/mongodb/conf
vim /usr/local/mongodb/conf/mongodb.conf
dbpath=/usr/local/mongodb/data
logpath=/usr/local/mongodb/logs/mongodb.log
fork=true
logappend=true
port=27017
auth=false
bind_ip=127.0.0.1,192.168.180.132
2.3 创建系统管理
#vim /usr/lib/systemd/system/mongodb.service
[Unit]
Description=MongoDB
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf
ExecReload=/bin/ki11 -S HUP SMAINPID
ExecStop=/usr/local/mongodb/bin/mongod –shutdown -f /usr/local/mongodb/conf/mongodb.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
2.3 启动
systemctl start mongodb

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf
2.4 给客户端软链接
ln -s /usr/local/mongodb/bin/mongo /usr/sbin/mongo
2.5 登录
五、CURD 1.插入数据
1.1 普通数据添加
语法:db.集合名称.insert(bson 格式数据)
db.user.insert({name:’heber’,age:18})

db.user.insert({
name:’heber’,
age:18
})
1.2 多维数据对象添加
db.user.insert({name:’heber’,age:18,addr:{province:’cq’,city:’cq’}})

db.user.insert({
name:’heber’,
age:18,
addr:{
province:’cq’,
city:’cq’
}
})
1.3 插入数组数据
db.user.insert({name:’heber’,age:18,addr:{province:’cq’,city:’cq’},hobby:[‘gitar’,’ops’]})

db.user.insert({
name:’heber’,
age:18,
addr:{
province:’cq’,
city:’cq’
},
hobby:[‘gitar’,’ops’]
}) 2.查询数据
2.1 普通查询
语法:db.集合名称.find() (无格式)

db.集合名称.findOne() (带格式,但是只会取出一条数据)
db.user.find()
db.user.find().pretty() (查询所有的并带格式)
db.user.findOne()
2.2 条件查询
语法:db.集合名称.find({查询条件}) (无格式)

db.集合名称.findOne({查询条件}) (带格式,但是只会取出一条数据)
db.user.find({name:’heber’})
db.user.find({name:’heber’}).pretty() (查询所有的并带格式)
db.user.findOne({name:’heber’}
2.3 范围查询
– mysql 中 < <= > >= !=
– mongo 中 $lt $lte $gt $gte $ne
– 查询年龄大于等于18的
db.user.find({age:{‘$gte’:18}}).pretty()
2.4 多字段查询
类似 mysql 的 and
db.user.find({name:”heber1”,age:{‘$gte’:18}}).pretty()
2.5 多维字段查询
db.user.find({“addr.city”:”cq”}).pretty()
2.6 数组条件查询
db.集合名称.find({字段(数组):{‘$all’:[v1,v2]}})
db.user.find({hobby:{‘$all’:[‘gitar’,’ops’]}}).pretty()
2.7 限定字段查询
类似mysql:select name,age from user;
–语法:db.集合名称.find({查询条件},{筛选条件})
–显示为1,不显示为0 要是1都是1,要是0都是0 _id除外
db.user.find({hobby:{‘$all’:[‘gitar’,’ops’]}},{name:1,age:1}).pretty()
2.8 多条件或查询
db.user.find({‘$or’:[{name:’heber1’},{age:18}]}).pretty()
2.9 count 语法
db.user.count()
db.user.find({age:{‘$gte’:18}}).count()
db.user.count({age:{‘$gte’:18}})
3.修改数据
语法:db.集合名称.update({查询条件},{修改条件})
updateOne() 修改匹配的第一条
updateMany() 修改匹配所有条
3.1 有$set 的修改
db.user.update({name:’heber’},{‘$set’:{age:20}})
db.user.updateOne({name:’heber’},{‘$set’:{age:20}})
3.2 无$set的修改
没有$set 关键字语法,把设置的字段进行修改,没有设置的就会被删除掉
db.user.update({name:’heber’},{age:20}) 4.删除数据
语法: db.集合名称.remove({查询条件})
deleteOne() 删除匹配的第一条
deleteMany() 删除匹配的多条
db.user.remove({name:’heber1’})
db.user.deleteMany({name:{‘$lte’:’heber1’}})
4.1 删除字段
可以删除某个字段的操作,使用的是update语法的$unset
db.user.update({name:’heber1’},{‘$unset’:{age:0}})
六、安全设置 1.用户权限管理
超级管理员账户,对于所有库具有读写权限
– 登录 MongoDB
语法:db.createUser({user:”用户名”,pwd:”密码”,roles:[“角色”]})
– 切换 admin
use admin
– 创建用户
db.createUser({user:”root”,pwd:”123456”,roles:[“root”]})
关闭 mongod 服务,重启添加权限参数并启动
systemctl stop mongodb
修改配置文件
#vim /usr/local/mongodb/conf/mongodb.conf
dbpath=/usr/local/mongodb/data
logpath=/usr/local/mongodb/logs/mongodb.log
fork=true
logappend=true
port=27017
auth=false
bind_ip=127.0.0.1,192.168.180.132 #把 auth=false 修改为 auth=true 这样以后就都需要账号密码登录
启动
systemctl start mongodb
此时登录后查询会显示没有权限查询
切换到 admin
use admin #获取用户信息
db.getUsers() #然后登录已有的用户
db.auth(‘root’,’123456’)
此时就有权限操作
七、MongoDB 备份与还原 1.备份
1.1 全库备份
/usr/local/mongodb/bin/mongodump -h 192.168.180.132 -u root -p 123456 –
authenticationDatabase=admin #备份后的数据存放在
dump 目录中
1.2 指定库备份
/usr/local/mongodb/bin/mongodump -h 192.168.180.132 -u root -p 123456 –
authenticationDatabase=admin -d user -o /tmp/mongo_bak 2.还原
/usr/local/mongodb/bin/mongorestore -h 192.168.180.132 -u root -p 123456 –
authenticationDatabase=admin -d user –dir /tmp/mongo_bak/user