day03 - MongDB之聚合管道aggregate基本操作、索引、备份和恢复数据库

一、聚合管道

db.集合名称.aggregate(
{管道1语句},
{管道2语句}
)

说明:前面管道的输出,作为后面管道的输入,依次类推,最后一个管道的结果将会最终显示
二、常用管道

  • $group

db.集合名称.aggregate(
{$group:{_id:"$字段名",…}}
)

将集合中的⽂档(数据)根据指定字段分组分组, 可⽤于统计结果

  • $match

db.集合名称.aggregate(
{$match:{条件}}
)

过滤数据, 只输出符合条件的⽂档

  • $project
    修改输⼊⽂档的结构, 如重命名、 增加、 删除字段、 创建计算结果
  • $sort

db.集合名称.aggregate(
{$sort:{排序字段1名:1或者-1,排序字段2名:1或者-1}}
)

参数:
1表示升序,-1表示降序
将输⼊⽂档排序后输出

  • $limit

db.集合名称.aggregate(
{$limit:num},
)

限制聚合管道返回的⽂档数

  • $skip

db.stu.aggregate(
{$skip:num}
)

跳过指定数量的⽂档, 并返回余下的⽂档

  • $unwind(展开)

db.集合名称.aggregate(
{$unwind:“$”},
)

将数组类型的字段进⾏拆分展开

三、运算表达式

  • $sum
    计算总和, $sum:1 表示以⼀倍计数
  • $avg:
    计算平均值
  • $min
    获取最⼩值
  • $max
    获取最⼤值
  • $push
    在结果⽂档中插⼊值到⼀个数组中
  • $first
    根据资源⽂档的排序获取第⼀个⽂档数据
  • $last
    根据资源⽂档的排序获取最后⼀个⽂档数据
    注:上面的使用一般以键值对来使用,以下为例

四、聚合管道具体使用

  • $group与$sum的结合

    注:
    ①_id表示分组后的字段名,可任意起,一般选择_id
    ②aggregate聚合管道中选择字段值需要使用$字段名
    ③$sum中必须指定每个数据的权值

以gender分组,且统计每个组中的数据(文档)个数
day03 - MongDB之聚合管道aggregate基本操作、索引、备份和恢复数据库_第1张图片
说明: _id相当于字段名,后面的$gender相当于指定_id的分组值,count相当于另一个字段名,{$sum:1}相当于指定count中的值,且指定每条数据的值为1,相当于权值,可以指定任何权值

指定$sum中的权值为2
在这里插入图片描述

  • $group与$math的结合
    day03 - MongDB之聚合管道aggregate基本操作、索引、备份和恢复数据库_第2张图片
    说明:先进行match匹配语句,将匹配到的结果集作为管道2group的输入数据(管道作用)
  • $group与$avg的结合
    在这里插入图片描述
    说明:avg_age指定字段名,且后面的字典{$avg:"$age"}为取age中的平均值,$age相当于age的值
  • $group统计数据个数(_id值为null)
    在这里插入图片描述
  • $sort的使用
    age按升序排序
    day03 - MongDB之聚合管道aggregate基本操作、索引、备份和恢复数据库_第3张图片
  • $limit的使用
    只显示前三个数据

day03 - MongDB之聚合管道aggregate基本操作、索引、备份和恢复数据库_第4张图片

  • $skip的使用
    跳过前三个,后面的全部显示
    day03 - MongDB之聚合管道aggregate基本操作、索引、备份和恢复数据库_第5张图片
  • unwind的使用
    先插入一条数据
    day03 - MongDB之聚合管道aggregate基本操作、索引、备份和恢复数据库_第6张图片
    使用unwind展开name字段
    day03 - MongDB之聚合管道aggregate基本操作、索引、备份和恢复数据库_第7张图片
    注:数据库中还是原来的数据,只是将数据展开显示,并没有插入到数据库中
    五、索引
  • 创建索引

db.集合名称.ensureIndex({要创建索引的字段名:1或者-1})

参数:
1表示升序,-1表示降序
注:在默认情况下创建的索引均不是唯一索引

(1)未创建索引前,通过name键查询数据所需的时间(单位)毫秒
day03 - MongDB之聚合管道aggregate基本操作、索引、备份和恢复数据库_第8张图片
(2)创建索引
day03 - MongDB之聚合管道aggregate基本操作、索引、备份和恢复数据库_第9张图片
说明:创建索引之前的索引的数目为1(默认主键_id自带索引),创建后索引数为2

(3)创建索引后的查询(单位:毫秒)
day03 - MongDB之聚合管道aggregate基本操作、索引、备份和恢复数据库_第10张图片

  • 创建唯一索引(有去重的作用)

db.集合名称.ensureIndex({“创建索引的字段”:1或-1},{“unique”:true})

day03 - MongDB之聚合管道aggregate基本操作、索引、备份和恢复数据库_第11张图片

  • 普通索引和唯一索引的区别

    唯一索引:如果再次插入唯一索引字段的重复数据时,MongoDB将报错,以提示插入重复键
    普通索引:当往该字段插入重复值时,将不会报错

  • 查看集合中创建的所有索引

db.集合点名称.getIndexes()
day03 - MongDB之聚合管道aggregate基本操作、索引、备份和恢复数据库_第12张图片

  • 建立联合索引(什么时候需要联合索引):

db.集合名称.ensureIndex({索引字段名:1或-1,索引字段名:1或者-1})

  • 删除索引
    db.集合点名称.dropIndex(‘字段索引的name值’)
    (1)查找需要删除的字段索引的name值
    day03 - MongDB之聚合管道aggregate基本操作、索引、备份和恢复数据库_第13张图片
    (2)删除索引
    day03 - MongDB之聚合管道aggregate基本操作、索引、备份和恢复数据库_第14张图片
    六、备份/恢复数据库

  • 备份数据库

mongodump -h 数据库地址(服务器地址) -d 数据库名称 -o 备份文件的存放位置

  • 恢复数据库

mongorestore -h 数据库地址(服务器地址)t -d 恢复后的数据库名称 --dir 备份文件的存放位置

mongorestore -h 192.168.196.128:27017 -d test2 --dir ~/Desktop/test1bak/test1

你可能感兴趣的:(MongDB数据库)