目录
一:聚合操作:
1: 管道名和表达式:
2:分组管道:
聚合的语法格式:
db.集合名称.aggregate([
{管道名 : {表达式}},
{管道名 : {表达式}},
{管道名 : {表达式}},
...
])
案例一: 先根据hometown进行分组,然后再统计分组人数。
案例二: 不分组,计算所有人的计算平均年龄。
案例三: 先根据hometown进行分组,然后计算组内的平均年龄。
3:数据透视:
正常情况在统计的不同性别的数据的时候,需要知道所有的name,需要逐条观察,如果通过某种方式把所有的name放到一起,那么此时就可以理解为数据透视。
案例一: 人以家乡分组,分组完成后,每组人名以列表的形式展示:
案例二: 按人进行分组,然后分组显示所有信息。
4:数据过滤:
$match
用于进行数据的过滤,是在能够在聚合操作中使用的命令,和find区别在于$match
操作可以把结果交给下一个管道处理,而find
不行。
案例一:查询年龄大于20的数据:
案例二:查询年龄大于20, 以hometown分组, 统计数量。
5: 投影管道:
$project类似于投影操作用于修改文档的输出结构,控制字段的显示。
案例一:查询英雄的年龄和姓名,仅输出年龄和姓名
案例二:通过性别分组,统计人数,但最后只展示统计人数。
6: 排序管道:
案例:查询男性英雄信息,按照年龄降序排序
7:跳跃管道和限制管道:
案例一:查询前两条英雄信息
案例二:查询从第三条开始的英雄信息
案例三:统计男女生人数,按照人数降序,返回第二条数据。
二:索引操作:
- 1: 创建索引: db.集合名.ensureIndex({key: 1})
- 2:删除索引:db.集合名.dropIndex({‘索引名称’:1})
- 3:创建唯一索引:db.集合名.ensureIndex({“字段名”:1}, {“unique”:true})
- 4:创建复合索引:db.collection_name.ensureIndex({字段1:1,字段2:1})
1:创建索引:
db.集合名.ensureIndex({属性:1})
1表示升序, -1表示降序