在以前的文章<Mongodb中数据聚合之MapReduce>中,咱们提到过Mongodb中进行数据聚合操做的一种方式——MapReduce,可是在大多很多天常使用过程当中,咱们并不须要使用MapReduce来进行操做,否则有点杀鸡用牛刀的感受,在这边文章中,咱们就简单说说用自带的聚合函数进行数据聚合操做的实现。mongodb
Mongodb中自带的基本聚合函数有三种:count、distinct和group。下面咱们分别来说述一下这三个基本聚合函数。函数
(1)count优化
做用:简单统计集合中符合某种条件的文档数量。spa
使用方式:db.collection.count(<query>)或者db.collection.find(<query>).count().net
参数说明:其中<query>是用于查询的目标条件。若是出了想限定查出来的最大文档数,或者想统计后跳过指定条数的文档,则还须要借助于limit,skip。blog
举例:ip
db.collection.find(<query>).limit();文档
db.collection.find(<query>).skip();get
(2)distinctit
做用:用于对集合中的文档针进行去重处理
使用方式:db,collection.distinct(field,query)
参数说明:field是去重字段,能够是单个的字段名,也能够是嵌套的字段名;query是查询条件,能够为空;
举例:
db.collection.distinct("user",{“age":{$gt:28}});//用于查询年龄age大于28岁的不一样用户名
除了上面的用法外,还可使用下面的另一种方法:
db.runCommand({"distinct":"collectionname","key":"distinctfied","query":<query>})
collectionname:去重统计的集合名,distinctfield:去重字段,,<query>是可选的限制条件;
举例:
这两种方式的区别:第一种方法是对第二种方法的封装,第一种只返回去重统计后的字段值集合,但第二种方式既返回字段值集合也返回统计时的细节信息。
(3)group
做用:用于提供比count、distinct更丰富的统计需求,可使用js函数控制统计逻辑
使用方式:db.collection.group(key,reduce,initial[,keyf][,cond][,finalize])
备注说明:在2.2版本以前,group操做最多只能返回10000条分组记录,可是从2.2版本以后到2.4版本,mongodb作了优化,可以支持返回20000条分组记录返回,若是分组记录的条数大于20000条,那么可能你就须要其余方式进行统计了,好比聚合管道或者MapReduce;
上面对Mongodb中自带的三种三种聚合函数进行了简单的描述,并对须要注意的地方进行了简单的说明,若是须要深刻使用,能够进入Mongodb官网查看相关细节信息,谢谢。