一、搭建MongoDB
# 配置Yum源仓库
cat > /etc/yum.repos.d/mongodb-org.repo << EOF
[mngodb-org]
name=MongoDB Repository
baseurl=http://mirrors.aliyun.com/mongodb/yum/redhat/7Server/mongodb-org/4.0/x86_64/
gpgcheck=0
enabled=1
EOF
# 清除元数据缓存并且加载元数据缓存
yum clean all
yum makecache
# 安装MongoDB
yum -y install mongodb-org
# 编辑配置文件,将监听端口修改为0.0.0.0监听所有
vim /etc/mongod.conf
10 path: /var/log/mongodb/mongod.log # 服务日志存放位置
14 dbPath: /var/lib/mongo # 数据存储位置
24 pidFilePath: /var/run/mongodb/mongod.pid # 进程PID文件存放位置
27 # network interfaces
28 net:
29 port: 27017
30 bindIp: 127.0.0.1 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
# 启动MongoDB服务
systemctl start mongod
# 查看MongoDB服务是否正常启用
lsof -i :27017
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mongod 30171 mongod 11u IPv4 446377 0t0 TCP *:27017 (LISTEN)
# 进入Mongodb
mongo
# 查看所有数据库
show dbs
# MongoDB多实例
cp -pf /etc/mongod.conf /etc/mongod2.conf
vim /etc/mongod2.conf
# 修改日志文件存放路径 #修改数据存储目录 #修改端口号防止冲突
10 path: /var/log/mongodb/mongod2.log
14 dbPath: /var/lib/mongo2
29 port: 27018
touch /var/log/mongodb/mongod2.log
mkdir -p /var/lib/mongo2
# 启动新实例,指定配置文件
mongod -f /etc/mongod2.conf
# 检测Mongodb端口
netstat -anlp | grep mongod
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 30171/mongod
tcp 0 0 0.0.0.0:27018 0.0.0.0:* LISTEN 30236/mongod
# 进入新实例
mongo --port 27018
二、MongoDB数据库基本操作
# 查看数据库版本
db.version()
# 查看所有数据库
show dbs
# 创建数据库,mongoDB数据库创建直接使用use即可,如果不在库内创建集合,退出时自动删除该库
use school
# 创建集合(表),是json格式,以键值对方式存储
db.createCollection('集合名')
# 查看集合
show tables 或 show collections
# 查看集合数据
db.集合名.find() # 条件可写在()内,不写默认查看全部,一页最多显示20条,按it继续查看
# 在集合中插入数据,json格式,键值对,字符串加双引号
db.abc.insert({"id":1,"name":"zhangsan","hobby":"talk"})
db.abc.find()
# 循环插入,+号可以连接字符串,直接将+号后面的内容转换为字符串衔接
for(i=2;i<=100;i++) db.abc.insert({"id":i,"name":"zhangsan"+i,"hobby":"talk"+i})
db.abc.find()
# 横向查看指定条件数据信息
db.abc.find({"id":1})
# 竖向查看指定条件数据信息
db.abc.findOne({"id":1})
# 查看每个字段的数据类型,例:可以为第一条数据加一个别名
a=db.abc.findOne({"id":1})
typeof(a.id)
typeof(a.name)
typeof(a.hobby)
-------------------------
> typeof(a.id)
number
> typeof(a.name)
string
> typeof(a.hobby)
string
# 更改指定条件数据,将name修改成tomcat
db.abc.update({"id":10},{$set:{"name":"tomcat"}})
-------------------------
> db.abc.find({"id":10})
{ "_id" : ObjectId("60707e5cc0f72922431300e6"), "id" : 10, "name" : "tomcat", "hobby" : "talk10" }
-------------------------
# 删除指定数据
db.abc.remove({"id":1})
# 删除集合
例:先创建一个新的集合,我们之前的abc后面要用
db.createCollection('qwe')
show tables
db.qwe.drop()
# 删除数据库,首先进这个要删的数据库,然后db.dropDatabase()
use myschool
db.createCollection('wawa')
show dbs
db.dropDatabase()
show dbs
三、数据库导出导入、备份恢复操作
===============
导出 mongoexport
===============
# 命令行模式下,-d指定数据库,-c指定数据表,-o表示输出
mongoexport -d school -c abc -o /opt/lic.json
cat /opt/lic.json # 如果你发现这个文件是空的话,那么就需要你指定一下端口--port 默认27017的库优先级高,所以指定端口不要忘
===============
导入 mongoimport
===============
# 导入的库和表都可以不存在
mongoimport -d wajueji -c qwe --file /opt/lic.json
# 验证一下是否导入成功
mongo
show dbs
use wajueji
db.qwe.find()
===============
指定条件 导出
===============
# -q指定条件,eq等于、ne不等于、gt大于、lt小于、ge大于等于、le小于等于,都可以使用
mongoexport -d school -c abc -q '{"id":{"$eq":10}}' -o /opt/10.json
cat /opt/10.json
==============
数据备份
==============
mkdir /backup
# 使用mongodump -d指定要保存的库,同理-c指定要保存的库中表
mongodump -d school -o /backup
ls /backup/school
保存的类型:bson
=============
恢复还原
=============
mongorestore -d lic --dir=/backup/school
# 验证
mongo
> use lic
switched to db lic
> show tables
abc
ceshi
> db.abc.find()
四、复制数据库
mongo
# 将school数据库复制为share数据库
db.copyDatabase("school","share")
show tables
五、克隆集合
例:
exit
# 再创建两个实例,后面要用到
# 创建多实例的数据目录
mkdir -p /data/mongodb/mongodb{13,4}
# 日志文件目录
mkdir -p /data/mongodb/logs
# 创建日志文件,并赋权777
cd /data/mongodb/logs
touch mongodb{3,4}.log
chmod 777 *
# 修改多实例配置文件
cd /etc
cp -p mongod.conf mongod3.conf
cp -p mongod.conf mongod4.conf
vim mongod3.conf
10 path: /data/mongodb/logs/mongodb3.log
14 dbPath: /data/mongodb/mongodb3
29 port: 27019
vim mongod4.conf
10 path: /data/mongodb/logs/mongodb4.log
14 dbPath: /data/mongodb/mongodb4
29 port: 27020
# 启动这两个实例(开启mongod服务)
mongod -f /etc/mongod3.conf
mongod -f /etc/mongod4.conf
# 查看端口
netstat -natp | grep mongod
tcp 0 0 0.0.0.0:27019 0.0.0.0:* LISTEN 33082/mongod
tcp 0 0 0.0.0.0:27020 0.0.0.0:* LISTEN 33693/mongod
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 1122/mongod
tcp 0 0 0.0.0.0:27018 0.0.0.0:* LISTEN 2378/mongod
----------------------
# 开始克隆
#这里进入27019
mongo --port 27019
# 克隆来自192.168.184.10:27018服务中的school库中的abc表
db.runCommand({"cloneCollection":"school.abc","from":"192.168.184.10:27018"})
# 验证
show dbs
use school
show tables
db.abc.find()
六、创建管理用户
mongoDB中自带一个admin库
在这个库中创建
例:
use admin
# 创建用户,用户名:root,密码:123123,身份:管理员
db.createUser({"user":"root","pwd":"123123","roles":["root"]})
show tables
# 使用db.auth("root","123123")进行验证,成功返回1,失败返回0
# 使用带用户登录MongoDB
mongo -u root -p 123123
七、进程管理
db.currentOp()
"opid" : 26345,
# 其中一大段中,关注opid,如果想结束这个进程就,db.killOp(26345)即可
# 但是关闭这个进程不代表退出数据库,相当于将当前进程初始化释放,关了之后又开启了,相当于一个优化操作