MongoDB高级操作

MongoDB高级操作

一、聚合操作

 常用管道:

  $group:将集合中的文档分组,可用于统计结果

  $match:过滤数据,只输出符合条件的文档

  $project:修改输入文档的结构,如重命名、增加、删除字段、创建计算结果

  $sort:将输入文档排序后输出

  $limit:限制聚合管道返回的文档数

  $skip:跳过指定数量的文档,并返回余下的文档

  $unwind:将数组类型的字段进行拆分

常用表达式:

  $sum:计算总和,$sum:1 同count表示计数

  $avg:计算平均值

  $min:获取最小值

  $max:获取最大值

  $push:在结果文档中插入值到一个数组中

  $first:根据资源文档的排序获取第一个文档数据

  $last:根据资源文档的排序获取最后一个文档数据

为了便于后续操作,创建以下集合:

MongoDB高级操作

1.1 $group

1.1.1 统计学生总人数、平均年龄:

MongoDB高级操作

1.1.2 分别统计男生、女生的总人数:

MongoDB高级操作

1.1.3 分别统计男生、女生的平均成绩:

MongoDB高级操作

1.2 $match

1.2.1 统计年龄大于15的男生、女生人数:

MongoDB高级操作

1.2.2 统计成绩大于80的男生、女生人数:

MongoDB高级操作

1.2.3 统计成绩低于80的人数及具体人名字:

MongoDB高级操作

1.3 $sort、$skip、$limit

 统计成绩大于80的男生、女生人数,统计结果按升序排序,只显示第二条数据:

MongoDB高级操作

二、索引

2.1 索引概念

索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件

并选取那些符合查询条件的记录,这种扫描全集合的查询效率是非常低的。

索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值

进行排序的一种结构。

 以下创建一个测试集合,循环插入10万个文档

MongoDB高级操作

2.2 查询性能测试

使用explain()命令进行查询性能分析,其中executionTimeMillis字段表示整体查询时间,单位是毫秒

 MongoDB高级操作

2.3 索引建立

建立索引语法:db.集合.ensureIndex({属性:1})

1表示升序,-1表示降序

对集合中的name字段进行建立索引

MongoDB高级操作

对建立索引的字段进行查询性能测试,查询时间几乎可以忽略不计

MongoDB高级操作

 建立联合索引,即对多个字段同时建立索引

MongoDB高级操作

后台建立索引

在前台创建索引期间会锁定数据库,会导致其它操作无法进行数据读写,在后台创建索引是,会定期释放写锁,

从而保证其它操作的运行,但是后台操作会在耗时更长,尤其是在频繁进行写入的服务器上。

background可指定以后台方式创建索引,即增加 "background" 可选参数。"background" 默认值为false。

MongoDB高级操作

2.4 查看索引

语法:db.集合名称.getIndexes()

 MongoDB高级操作

2.5 删除索引

删除指定索引:db.集合名称.dropIndex("索引名称"),索引名称可以通过getIndexes()命令查看

删除全部索引:db.集合名称.dropIndexes()

 MongoDB高级操作