# mongodb的介绍与使用
这两天看了下mongoDB权威指南,记录下笔记,相关的细节还是要去看文档。
# 一.mongo的安装
mongo的安装很简单,新的版本可以直接从官网下载,解压后直接使用。
# 二.启动与连接
mongo的启动有两种方式:
1.通过配置文件启动
logpath=/opt/mongodb/data/mongo_27017/mongod27017.log
logappend=true
fork=true
dbpath=/opt/mongodb/data/mongo_27017
pidfilepath=/opt/mongodb/data/mongo_27017/mongod_27017.pid
port=27017
2.启动时指定参数
./bin/mongod --port 27017 --fork --logpath /opt/mongodb/data/mongo_27017/mongod27017.log --dbpath /opt/mongodb/data/mongo_27017 --pidfilepath /opt/mongodb/data/mongo_27017/mongod_27017.pid
连接mongo也很简单,比如可以在终端通过mongo命令直接连接,也可以使用如Robo 3T这类的图形化工具
关闭mongo也很简单,直接kill即可,不要kill -9 或pkill。
# 三.mongo的数据库,集合,文档
如果对应mysql来理解的话,类似如下表格
RDBMS | MongoDB |
---|---|
Table(表) | Collection(集合) |
Records / Rows(记录/列) | Document / Object(文档/对象) |
也就是一个文档类似于mysql的一行数据,多个文档组成的集合类似于mysql的一个表。多个集合就组成一个数据库了。一个mongo实例可以包含多个数据库
文档的格式是json的,如
{ site : "w3cschool.cc" }
集合如下面这个列子,它包含了两个文档
{"name":"mengxiangyue"} {"Name":"mengxiangyue","sex":"nan"}
# 四.常用命令
查看数据库
show dbs
使用某个数据库
use 数据库名称
查看数据库的集合
db.getCollectionInfos()
集合查询
db.user.find()
指定条件查询
db.user.find({"name":"jack"})
插入
db.foo.insert({"bar":"baz"})
insert 插入
db.foo.insert({"bar":"baz"})
remove 删除
db.users.remove()
db.mailing.list.remove({"opt-out":true})
db.drop_collection("bar")
update 更新
var joe = db.users.findOne({"name":"joe"})
db.users.update({"name":"joe"},joe)
排序
db.COLLECTION_NAME.find().sort({KEY:1})
# 五.索引
创建索引
db.COLLECTION_NAME.ensureIndex({KEY:1})
删除索引
db.collection.dropIndexes();
db.collection.dropIndex({x: 1, y: -1})
重建索引
db.myCollection.reIndex()
// same as:
db.runCommand( { reIndex : 'myCollection' } )
# 六.主从,副本集,分片
# 1.主从
主从的概念和mysql的一样,可用于备份,故障恢复,读扩展等。如下图
# 2.副本集
1.集群中没有特定的主数据库。
2.如果哪个主数据库宕机了,集群中就会推选出一个从属数据库作为主数据库顶上,这就具备了自动故障恢复功能
如图
# 3.分片
分片就是把一个数据分摊到多个实例上,如图
这部分参考:http://blog.csdn.net/canot/article/details/50739359