# 配置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 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
MongoDB用户权限分配详细请查看
七、进程管理db.currentOp() "opid" : 26345, # 其中一大段中,关注opid,如果想结束这个进程就,db.killOp(26345)即可 # 但是关闭这个进程不代表退出数据库,相当于将当前进程初始化释放,关了之后又开启了,相当于一个优化操作