首页 > 数据库技术 > 详细

4.MongoDB聚合

时间:2015-01-29 02:08:24      阅读:268      评论:0      收藏:0      [点我收藏+]

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 化简

把列表中的值化简成一个单值

?

?

?

?

?

?

4.MongoDB聚合

原文:http://sgq0085.iteye.com/blog/2180916

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!