4.MongoDB聚合
1.count 求总数
db.foo.count()
db.foo.find().length()
db.foo.find().count()
?
2.distinct 去重
查看集合foo中所有bar的值
db.runCommand({"distinct":"foo","key":"bar"})
?
3.group 分组
db.runCommand({"group":{"ns":"stocks","key":"day","initial":{"time":0},"$reduce":function(doc,prev){
? ? if(doc.time > prev.time){
? ? ? ? prev.price = doc.price;
? ? ? ? prev.time = doc.time; ??
? ? }
}},"condition":{"day":{"$gt":"2010/09/30"}}})
"ns":"stocks" 指定要进行分组的集合
"key":"day" 指定文档要分组依据的键,这里是day
"initial":{"time":0} 初始化累加器的值
"$reduce":function(doc,prev){...} doc是当前文档,prev是累加器文档
"condition":{"day":{"$gt":"2010/09/30"}} 也可以是cond或者q作为键,用于filter,最简单的{"$exists":true},防止没有依据的键被分到了一组
?
(1)使用完成器 finalizer
精简从数据库传到用户的数据,在每组函数传递到客户端之前被调用一次
?
(2)将函数作为键使用
db.posts.group({"ns":"posts","$keys":function(x){return age - 10;},....})
?
4.MapReduce
1.map 映射
将操作映射到集合中每个文档 可以无作为,或产生一些键和X个值
?
2.中间过程 shuffle 洗牌
按照键分组,并将产生的键值组成列表放到对应的键中
?
3.reduce 化简
把列表中的值化简成一个单值
?
?
?
?
?
?
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。