有一些命令,功能,文件缺失,需要额外下载才能用

索引

MongoDB 的索引也是跟mysql差不多,不过没有那种多种类型,通过命令创建,索引字段,创建索引的顺序,
db.col.createIndex({“title”:1})
1为升序 -1为降序
后面还可以有许多可选参数,比如:db.values.createIndex({open: 1, close: 1}, {background: true})

聚合

用来处理数据,比如平均值,求和等,类似mysql 的count(),
db.mycol.aggregate([{$group : {_id : “$by_user”, num_tutorial : {$sum : 1}}}])
等同于MySQL的: select by_user, count(
) from mycol group by by_user
管道
管道一般是用于将当前命令的输出结果作为下一个命令的参数,
MongoDB的聚合管道将文档在一个管道处理完毕后将结果集产地给下一个管道处理,管道操作时可以重复的,
表达式:处理输入文档并输出,表达式时无效的,只能用于计算当前聚合管道的文档,不能处理其他的文档,
例子:
db.articles.aggregate( [
{ $match : { score : { $gt : 70, $lte : 90 } } },
{ $group: { _id: null, count: { $sum: 1 } } }
] );

复制(副本集)

将数据同步在多个服务器的过程,
复制提供了数据的冗余备份,并在多个服务器存储数据副本,提供了数据高可用,和安全性
至少两个节点,一个主节点(负责处理客户端请求)其余从节点(负责复制主节点的数据)
主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证数据一致
添加
添加副本集的成员,需要多个mongodb服务,进去客户端,通过rs.add()方法来添加副本集成员,(最多12个)
需要在主节点将从节点加入到副本集中,有一些命令可以查看状态,类型,
MongoDB的副本集,跟常见的主从不一样,主节点在宕机后,服务不会停止,副本集中从节点会接管主节点成为主节点,不会出现宕机的情况

分片

MongoDB存在另一种集群,分片技术,满足数量大量增长的需求
场景:所有的写入都在主节点,操作都在主节点,内存不足,磁盘不足,垂直扩展昂贵
我感觉跟mysql 的集群没什么区别,都是多个实例服务,分担压力,
三部分组成(都是MongoDB服务实例)
Shard:实际存储的数据块 (防止主机单点故障,可以配副本集)
Config Server:mongodb实例,存储整个集群数据,包括快数据(控制的,类似中间件,注册)
Query Routers:前端路由,对外提供访问的Mangodb服务

备份/恢复

在Mongodb种我们使用mongodump 命令来备份MongoDB的数据,该命令可以导出数据到指定目录中
可以通过参数指定导出的数据量级转存的服务器
进入到bin目录,执行mongodump 有参数选项,可以配置
恢复
可以使用mongorestore 命令来恢复备份的数据(通过备份文件)
也是进去到bin目录,有参数选项

监控

mongostat 是自带的状态检测工具,在命令行条件下使用,他会间隔固定时间获取mongodb的当前运行状态,并输出,如果发现数据库有问题,优先考虑使用改命令查看
进去到bin目录,执行
mongotop也是内置的工具,用来跟踪一个MongoDB的实例,查看那些大量的时间花费在读取和写入数据,提供了每个集合的水平的统计数据,默认mongotop返回值的每一秒
进去到bin目录,执行