目录
聚合
聚合就相当于linux中的管道
group分组
以gender字段进行分组 统计每组字段个数 $sum:1代表每条数据记为几
取字段必须加上$ 和引号
分组时_id为空,就将整个文档数据分为为一个组
project显示
b.name.aggregate({
$group:{
_id:"$gender"
,avg:{$avg:'$age'},
count:{
$sum:1}
}
},
{$project:{
_id:0,
gender:'$_id',
avg:1,
count:1
}
}
)
先进行分组,然后设置_id不显示,gender字段显示上面_id的内容 avg和count字段显示
Match搜索
Match的功能和find是一样的 只不过match能在管道中使用
sort排序
分组男女生,统计人数,降序排序
limit和skip
先用skip后用limit 效率更高
聚合中先用limit后用skip,是取不到数据的
正常的find()方法可以取到 limit先后结果没有区别
索引
db.name.ensureIndex({name:1}) 1为升序 -1为降序 ,正常升序降序没有什么影响 只有在sort的时候排序会影响速度 若索引为升序 sort升序排序会快一些
循环添加数据
explain性能分析
未设置索引时所需的时间
设置索引后所需的时间
explain(‘executionStats’) 查看性能分析
索引操作
创建索引时 加上 unique字段可以设定索引值唯一
db.name.ensureIndex({name:1},{unique:true})
这样设置之后插入的name值不能重复 若集合中对应的字段已经有重复值 会设置失败