MongoDB 是一个文档数据库同时也是非关系型数据库,为简化应用程序的开发与扩展而设计。比较适合存储大量的没有规则、无序的数据。未经过处理的数据。
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
cd /usr/local/mongodb/bin
./mongo
show dbs
use dbname
db.getName()
使用一台mongo远程登录另外一台mongo
mongo 远程的ip
mongo 192.168.170.132
由于默认情况下不允许使用ip进行登录,所以需要解除限制
正常情况下不要kill -9 mongod,使用mongo命令客户端里的关机命令
-- 先登录到MongoDB然后切换adim用户
use admin
-- 然后执行下面命令停止数据库
db.shutdownServer()
#创建一个文件夹
/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
#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
systemctl start mongodb
或
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf
ln -s /usr/local/mongodb/bin/mongo /usr/sbin/mongo
语法:db.集合名称.insert(bson格式数据)
db.user.insert({name:'heber',age:18})
或
db.user.insert({
name:'heber',
age:18
})
db.user.insert({name:'heber',age:18,addr:{province:'cq',city:'cq'}})
或
db.user.insert({
name:'heber',
age:18,
addr:{
province:'cq',
city:'cq'
}
})
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']
})
语法:db.集合名称.find() (无格式)
或
db.集合名称.findOne() (带格式,但是只会取出一条数据)
db.user.find()
db.user.find().pretty() (查询所有的并带格式)
db.user.findOne()
语法:db.集合名称.find({查询条件}) (无格式)
或
db.集合名称.findOne({查询条件}) (带格式,但是只会取出一条数据)
db.user.find({name:'heber'})
db.user.find({name:'heber'}).pretty() (查询所有的并带格式)
db.user.findOne({name:'heber'}
-- mysql中 < <= > >= !=
-- mongo中 $lt $lte $gt $gte $ne
-- 查询年龄大于等于18的
db.user.find({age:{'$gte':18}}).pretty()
类似mysql的and
db.user.find({name:"heber1",age:{'$gte':18}}).pretty()
db.user.find({"addr.city":"cq"}).pretty()
db.集合名称.find({字段(数组):{'$all':[v1,v2]}})
db.user.find({hobby:{'$all':['gitar','ops']}}).pretty()
类似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()
db.user.find({'$or':[{name:'heber1'},{age:18}]}).pretty()
db.user.count()
db.user.find({age:{'$gte':18}}).count()
db.user.count({age:{'$gte':18}})
语法:db.集合名称.update({查询条件},{修改条件})
updateOne() 修改匹配的第一条
updateMany() 修改匹配所有条
db.user.update({name:'heber'},{'$set':{age:20}})
db.user.updateOne({name:'heber'},{'$set':{age:20}})
没有$set关键字语法,把设置的字段进行修改,没有设置的就会被删除掉
db.user.update({name:'heber'},{age:20})
语法: db.集合名称.remove({查询条件})
deleteOne() 删除匹配的第一条
deleteMany() 删除匹配的多条
db.user.remove({name:'heber1'})
db.user.deleteMany({name:{'$lte':'heber1'}})
可以删除某个字段的操作,使用的是update语法的$unset
db.user.update({name:'heber1'},{'$unset':{age:0}})
超级管理员账户,对于所有库具有读写权限
-- 登录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')
此时就有权限操作
/usr/local/mongodb/bin/mongodump -h 192.168.180.132 -u root -p 123456 --authenticationDatabase=admin
#备份后的数据存放在
dump 目录中
/usr/local/mongodb/bin/mongodump -h 192.168.180.132 -u root -p 123456 --authenticationDatabase=admin -d user -o /tmp/mongo_bak
/usr/local/mongodb/bin/mongorestore -h 192.168.180.132 -u root -p 123456 --authenticationDatabase=admin -d user --dir /tmp/mongo_bak/user
评论