浅析mongodb的group分组统计
2018-02-05 15:18
1461 查看
group做的聚合有些复杂。先选定分组所依据的键,此后MongoDB就会将集合依据选定键值的不同分成若干组。然后可以通过聚合每一组内的文档,产生一个结果文档。
和数据库一样group常常用于统计。MongoDB的group还有很多限制,如:返回结果集不能超过16M, group操作不会处理超过10000个唯一键,好像还不能利用索引[不很确定]。
Group大约需要一下几个参数。
1.key:用来分组文档的字段。和keyf两者必须有一个
2.keyf:可以接受一个javascript函数。用来动态的确定分组文档的字段。和key两者必须有一个
3.initial:reduce中使用变量的初始化
4.reduce:执行的reduce函数。函数需要返回值。
5.cond:执行过滤的条件。
6.finallize:在reduce执行完成,结果集返回之前对结果集最终执行的函数。可选的。
下面介绍一个实例:
先插入测试数据:
?
1.普通分组查询
?
2.筛选后再分组
?
3、普通的$where查询:
?
group联合$where查询
?
4、使用函数返回值分组
?
5.使用终结器
?
有关MapReduce
?
注意:
1.mapreduce是根据map函数里调用的emit函数的第一个参数来进行分组的
2.仅当根据分组键分组后一个键匹配多个文档,才会将key和文档集合交由reduce函数处理。例如:
?
执行mapreduce命令后,再查看wq表数据:
?
以上所述就是本文的全部内容了,希望大家能够喜欢。
和数据库一样group常常用于统计。MongoDB的group还有很多限制,如:返回结果集不能超过16M, group操作不会处理超过10000个唯一键,好像还不能利用索引[不很确定]。
Group大约需要一下几个参数。
1.key:用来分组文档的字段。和keyf两者必须有一个
2.keyf:可以接受一个javascript函数。用来动态的确定分组文档的字段。和key两者必须有一个
3.initial:reduce中使用变量的初始化
4.reduce:执行的reduce函数。函数需要返回值。
5.cond:执行过滤的条件。
6.finallize:在reduce执行完成,结果集返回之前对结果集最终执行的函数。可选的。
下面介绍一个实例:
先插入测试数据:
?
?
?
?
?
?
?
?
1.mapreduce是根据map函数里调用的emit函数的第一个参数来进行分组的
2.仅当根据分组键分组后一个键匹配多个文档,才会将key和文档集合交由reduce函数处理。例如:
?
?
相关文章推荐
- [Mongo]分组统计时间 aggregate,group,distinct
- MongoDB中的一个分组统计的查询(Group ... Distinct)
- java:Mongodb 分组统计应用group的使用(含场景)
- Hadoop实战-MapReduce之分组(group-by)统计(七)
- [Mongo] 按时间分组统计(group时间格式化)
- 分组统计方法:用GroupBy
- group_concat 多对多关联, 统计分组数据, 结果拼接到一个字段
- C# List GroupBy 分组统计
- 浅析mongodb中group分组
- oracle sum case when group by,同时使用,实现分组统计
- 分组统计方法:用Group By
- mysql按照天或小时group分组统计
- group分组之后要求统计count问题
- mysql 分组统计(直播内容状态,带上内容id),count case when group_concat sql
- nosql mongodb group分组统计及索引优化
- mysql 分组统计(直播内容状态,带上内容id),count case when group_concat sql
- group by & count分组统计数量
- MongoVUE Group分组统计查询
- 通过GROUP BY grouping sets提升数据分组统计效率
- 一步一步跟我学习lucene(12)---lucene搜索之分组处理group查询