目录

  • 一、搭建MongoDB数据库
  • 1.1 配置YUM源仓库
  • 1.2 安装MongoDB
  • 1.3 启动并查看服务
  • 1.4 登录数据库
  • 二、MongoDB多实例创建
  • 2.1 创建多实例配置文件,并开启服务
  • 2.2 登录数据库
  • 三、基本操作
  • 3.1 创建、插入、更改、删除、查看数据
  • 3.2 导入数据(数据库中)
  • 3.3 导出操作
  • 3.4 导入操作
  • 3.5 条件(导出)操作
  • 3.6 备份与恢复
  • 3.7 复制数据库
  • 3.8 克隆集合
  • 3.9 创建管理用户
  • 3.10 进程管理


一、搭建MongoDB数据库

介绍:
■关系型数据库和非关系型数据库:
●对于关系型的数据库,存储数据之前,必须先建表建库,随着数据的复杂度越来越高,所建表的数量也就越来越多,但是非关系型数据库却不需要如此复杂;
●关系型数据库很强大,但是它并不能很好的应付所有的应用场景;
MySQL的扩展性差;大数据下IO压力大;表结构更改困难。
●mongodb 易扩展,大数据量高性能,灵活的数据模型,高可用。

■mongodb优势:
●易扩展性:nosql数据库的种类繁多;共同的特点就是去掉了关系型数据库的关系型特性;数据之间没有关系,容易扩展。
●大数据。高性能:nosql都具有非常高的读写性能,尤其在大数据量下,同样表现优秀,得益于它的无关系性,数据库结构简单;
●灵活的数据模型:不需要为事先存储的数据建立字段,随时可以存储自定义格式的数据,在关系型数据库中,增删是一件很麻烦的事,如果是一个非常大的数据量的表,增加字段实现困难。

【实验环境】
关闭防火墙、关闭核心防护,配置成能上网的环境。

1.1 配置YUM源仓库

[root@localhost ~]# cd /etc/yum.repos.d
[root@localhost yum.repos.d]# mkdir backup
[root@localhost yum.repos.d]# mv C backup
[root@localhost yum.repos.d]# vim mongodb.repo
*
[mongodb-org]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc

[root@localhost yum.repos.d]# yum list //加载yum仓库

1.2 安装MongoDB

[root@localhost yum.repos.d]# yum -y install mongodb-org
[root@localhost yum.repos.d]# vim /etc/mongod.conf
bindIp: 0.0.0.0 //监听地址
port: 27017 //监听端口

1.3 启动并查看服务

[root@localhost yum.repos.d]# systemctl start mongod
[root@localhost yum.repos.d]# netstat -anpt |grep 27017

1.4 登录数据库

[root@localhost yum.repos.d]# mongo
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
> quit

二、MongoDB多实例创建

2.1 创建多实例配置文件,并开启服务

*[root@localhost ~]# mkdir -p /data/mongodb/mongodb2 //创建数据目录
[root@localhost ~]# cd /data/mongodb/
[root@localhost mongodb]# ls
[root@localhost mongodb]# mkdir logs
[root@localhost mongodb]# touch logs/mongodb2.log //创建日志文件
[root@localhost mongodb]# cd logs/
[root@localhost logs]# chmod 777 .log //赋予权限
[root@localhost logs]# cd /etc
[root@localhost etc]# cp -p mongod.conf mongod2.conf
[root@localhost etc]# vim mongod2.conf

修改以下内容:
path: /data/mongodb/mongodb2.log
dbPath: /data/mongodb/mongodb2
port: 27018

[root@localhost etc]# mongod -f /etc/mongod2.conf //开启
[root@localhost etc]# netstat -anpt
//发现27018端口开启

2.2 登录数据库

[root@localhost etc]# mongo --port 27018 //进入数据库
> show dbs //查看文件
> db.version() //查看版本

3.6.20

三、基本操作

3.1 创建、插入、更改、删除、查看数据

> use school;	//不存在会创建,不建立集合又会删除
> db.createCollection('info')    { "ok" : 1 }

> show collections
> show tables
  info

> db.info.insert({"id":1,"name":"zhangsan"})
  WriteResult({ "nInserted" : 1 })

> db.info.insert({"id":2,"name":"lisi","score":89,"add":"nj","hobby":["game","talk","play"]})
  WriteResult({ "nInserted" : 1 })

> db.info.find()
  { "_id" : ObjectId("5fa3a6854c46b180208139c6"), "id" : 1, "name" : "zhangsan" }
  { "_id" : ObjectId("5fa3aab34c46b180208139c8"), "id" : 2, "name" : "lisi", "score" : 89, "add" : "nj", "hobby" : [ "game", "talk", "play" ] }

> for(var i=3;i<=20;i++)db.info.insert({"id":i,"name":"jack"+i})

> db.info.findOne({"id":10})

> a=db.info.findOne({"id":10})	//查找指定记录并赋予别名a

> typeof(a.id)	//查看属性类型
  number

> typeof(a.name)
  string

> typeof(a.hobby)
  object

> db.info.update({"id":10},{$set:{"name":"tom"}})	//更改

> show collections	//查看集合
> show tables	//查看集合
  info


> db.info.drop()	//删除集合
> db.dropDatabase()	//删除数据库

3.2 导入数据(数据库中)

> for(var i=3;i<=20;i++)db.info.insert({"id":i,"name":"jack"+i})
> db.info.count()	//显示
  20

3.3 导出操作

[root@localhost ~]# mongoexport -d school -c info -o /opt/school.json
[root@localhost ~]# cd /opt
[root@localhost opt]# ls

rh school.json

3.4 导入操作

[root@localhost opt]# mongoimport -d school -c test --file /opt/school.json
[root@localhost opt]# mongo

> use school
switched to db school
> show tables
info
test

3.5 条件(导出)操作

[root@localhost opt]# mongoexport -d school -c info -q ‘{“id”:{"$gt":10}}’ -o /opt/top.json
//-d:指定数据库;-c:指定集合;-o:output,指定导出路径
[root@localhost opt]# ls

rh school.json top.json

3.6 备份与恢复

[root@localhost ~]# mkdir /backup
[root@localhost ~]# mongodump -d school -o /backup/ //备份
[root@localhost ~]# cd /backup
[root@localhost backup]# cd school
[root@localhost backup]# ls

info.bson info.metadata.json test.bson test.metadata.json
//bson类型

[root@localhost backup]# mongorestore -d myschool --dir=/backup/school //恢复,数据库不在可以自动创建
[root@localhost backup]# mongo //进数据库
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
myschool 0.000GB
school 0.000GB

> use myschool
> show tables
  info
  test

> db.info.find()

3.7 复制数据库

创建:
> use school
> for(var i=1;i<=100;i++)db.users.insert({“id”:i,“name”:“jack”+i})
> show collections
> show tables

info
test
users

> db.users.find()

复制:
> db.copyDatabase(“school”,“share”)
> show dbs

admin 0.000GB
config 0.000GB
local 0.000GB
myschool 0.000GB
school 0.000GB
share 0.000GB

> use share
> show tables
  info
  test
  users

> db.users.find()

3.8 克隆集合

[root@localhost backup]# mongo --port 27018
> db.runCommand({“cloneCollection”:“school.users”,“from”:“20.0.0.22:27017”})
> show dbs

admin 0.000GB
config 0.000GB
local 0.000GB
school 0.000GB

> use school
> show tables
  users

> db.users.find()

3.9 创建管理用户

> use admin
> db.createUser({"user":"root","pwd":"123","roles":["root"]})
> db.auth("root","123")
  1

3.10 进程管理

> db.currentOp()
。。。。。。。。省略。。。。。。。
    "opid" : 340,

> db.killOp(340)