mongodb入门-2-基本命令
接着上一章节,继续来学习MDB的基本命令。
排序
MDB使用sort进行排序,指定KEY,1为升序,-1为降序

索引
终于来到最关心的命令和环节--索引,索引是提升性能关键,也是基础。

使用createIndex创建索引,示例如下:

还可同时指定多个字段组合索引,类似于MYSQL中的聚合索引。
createIndex(keys,options)
options如下:

需要注意的几个命令:
background
创建索引时,会阻塞其他数据库的操作,因此这个最好是指定一下为true
expireAfterSeconds
在类型为Date的字段上创建索引,指定索引的expireAfterSeconds字段,到期之后,集合数据会被删除。


一些额外的命令:
1、查看集合索引
db.col.getIndexes()
2、查看集合索引大小
db.col.totalIndexSize()
3、删除集合所有索引
db.col.dropIndexes()
4、删除集合指定索引
db.col.dropIndex("索引名称")
聚合
aggregate表示聚合,类似于MYSQL中的count或者sum等函数

具体的操作类型如表:

MDB聚合函数中,不同的函数的操作结果直接用于下一个操作函数,类似于UNIT、LINUX中的管道:
常见的几个操作如下表:

下面的指令代表:
先按age>19进行match,出来的数据,
再按照name分组,
count字段的数据来源于分组之后的age并被添加进的去重的set数组。

多列group命令如下:

聚合的使用非常灵活,可以满足很多查询需求。通过$project命令返回特定的结构
若要将某一field(字段)按照年月日周进行group,可以通过以下方式:

前提是改field本身是Date类型
复制
MDB通过副本操作提高了可用性。
下图简单示意了其原理或者说结构:

以下只是简单学习一下MDB的复制指令:
一主一从环境搭建:
-
通过replSet启动mongod服务
mongod --port 27017 --dbpath "/data/db" --replSet rs0
指定27017端口启动,db目录是/data/db, 副本集名称为rs0,27017将作为主节点 -
在同一台机器,启动另一个端口作为父节点,
sudo mkdir -v /data/db2创建/data/db2目录作为副数据仓库,注意需要改权限chown admin /data/db2, 之后使用mongod --port 27018 --dbpath "/data/db2" --replSet rs0 -
两个节点启动之后,使用mongo -port 27017连接主节点。使用rs.initiate()启动一个新的副本集,使用rs.conf()查看副本集的配置,使用rs.status()查看副本集的状态。
-
通过rs.add()添加副本集成员,此时副本节点开始主节点的数据。

-
此时mongo -port 27018登录副节点,show dbs命令返回错误,因为默认副节点是不允许读写的,此时需要通过:rs.secondaryOk() 命令将副节点开启读。此时再看show dbs,如图,两个节点的数据已经同步了。

新增的数据也同步到了从节点:

至此,数据复制完成。
浙公网安备 33010602011771号