简介
- MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
- MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
特点
- 面向集合存储,易存储对象类型的数据。
- 模式自由。
- 支持动态查询。
- 支持完全索引,包含内部对象。
- 支持查询。
- 支持复制和故障恢复。
- 使用高效的二进制数据存储,包括大型对象(如视频等)。
- 自动处理碎片,以支持云计算层次的扩展性。
- 支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
- 文件存储格式为BSON(一种JSON的扩展)。
- 可通过网络访问。
适用场景 - 网站数据
- 缓存
- 大尺寸、低价值的数据
- 高伸缩性的场景
- 用于对象及JSON 数据的存储
- 高度事务性的系统
- 传统的商业智能应用
- 需要SQL 的问题
一、MongoDB安装
1、添加yum源
vim /etc/yum.repos.d/mongodb-org.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
2、安装mongodbyum list
yum install mongodb-org -y3、编辑配置文件
vim /etc/mongod.conf #yum 安装的配置文件在/etc下
port: 27017 #监听端口
bindIp: 0.0.0.0 #监听地址
4、开启服务
systemctl start mongod.service #方法一
mongod -f /etc/mongod.conf #方法二
netstat -anpt | grep 27017 #查看端口
5、关闭服务
mongod -f /etc/mongod.conf --shutdown #方法一
kill-9 进程号 #方法二
6、进入数据库
二、多实例操作
1、编辑实例2的配置文件
cd /etc/
cp -p mongod.conf mongod2.conf #复制配置文件
vim mongod2.conf #修改配置文件
path: /data/mongodb/mongod2.log
dbPath: /data/mongodb/mongod2
port: 27018
2、创建日志文件、数据文件存放目录
mkdir -p /data/mongodb/
cd /data/mongodb/
mkdir mongod2
touch mongod2.log
chmod 777 mongod2.log
3、开启实例2
mongod -f /etc/mongod2.conf
4、查看端口
netstat -ntap
四、基本操作命令
#增
//不存在会创建,不建立集合会删除
use mydb;
//插入数据
db.createCollection(‘a‘);
db.a.insert ({"id":1,"name":"zhang1"});
for (var i=2;i<=100;i++)db.a.insert({"id":i,"name":"zhang"+i});
#查
//查看数据库
show dbs;
//查看集合
show collections;/show tables;
//查看信息
db.a.find();
//筛选查看
db.a.findOne({"id":3});
//别名筛选查看
c=db.a.findOne({"id":5});
//查看类型
typeof(c.id);
#改
//更改
db.users.update({"id":3},{$set:{"name":"tom"}});
#删
//删除信息
db.a.remove({"id":3});
//删除集合
db.a.drop();
//删除数据库
db.dropDatabase();
五、导入、导出数据库
首先创建一个school数据库
for (var i=1;i<=100;i++)db.info.insert({"id":i,"name":"zhang"+i});
//导出
mongoexport -d school -c info -o /opt/school.json #导出整个数据库
mongoexport -d school -c info -q ‘{"id":{$eq:10}}‘ -o /opt/top10.json #有条件的导出数据
//导入
mongoimport -d abc -c info --file a.json
六、备份、恢复
//备份
mongodump -d school -o /opt/ #/opt自动按数据库名称建立文件
//恢复
mongorestore -d aaa --dir=/opt/school #还原的数据库可以不存在
七、复制数据库
db.copyDatabase("aaa","aaa2") #数据库中内容也会复制
八、克隆集合
mongo --port 27018 跨实例克隆(在另外的实例中)
db.runCommand({"cloneCollection":"aaa.info","from":"192.168.37.128:27017"})
九、创建管理用户
use admin
db.createUser({"user":"root","pwd":"123","roles":["root"]})
db.auth("root","123") #显示1,成功
十、进程管理
db.currentOp()
原文地址:http://blog.51cto.com/13784264/2176888