MongoDB 聚合函数

w_xin125 2013-09-25 01:51:58
MongoDB.Driver.MongoCollection.MapReduce()怎样实现Sum,avg,请大侠指点!
...全文
199 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
w_xin125 2013-09-26
  • 打赏
  • 举报
回复
嗯 好的,谢谢指教!
QuickPai 2013-09-26
  • 打赏
  • 举报
回复
你可以到官网的文档看看emit这个函数,它就是实现分组的, 也就是说在mapfunction里面实现分组的。
至于你你说的直接求和,那就不需要mapreduce函数了,直接find结果,foreach一遍sum+=price不就可以了?
w_xin125 2013-09-25
  • 打赏
  • 举报
回复
你好,非常感谢你,我看了你的博客,很有用,但是有一点不明白,就是哪句代码设置分组的, 如果我不想分组,而是计算所有price的和(sum)该怎么做!
QuickPai 2013-09-25
  • 打赏
  • 举报
回复
MapReduce类似于SQL中的Group操作,但mapreduce分2步实现,map函数进行分组,reduce函数进行计算等,你说的sum,avg就可以在reduce函数中实现。 比如: Input: ========================= { cusid:1, price:15 }; { cusid:2, price:30 }; { cusid:2, price:45 }; { cusid:3, price:45 }; { cusid:4, price:5 }; { cusid:5, price:65 }; { cusid:1, price:10 }; { cusid:1, price:30 }; { cusid:5, price:30 }; { cusid:4, price:100 }; ========================= Output: ========================= { cusid:1, price:55 }; { cusid:2, price:75 }; { cusid:3, price:45 }; { cusid:4, price:105 }; { cusid:5, price:95 }; ========================= 上面的input之后,我们想要得到output结果,那个我们就可以使用MapReduce操作,

33.        // Write map and reduce function  
34.        string mapFunction = @"function(){  
35.                                    emit(this.cusid, this.price);  
36.                                };";  
37.  
38.        string reduceFunction = @"function(cusid, prices){  
39.                                    var total = 0;  
40.                                    total = Array.sum(prices);  
41.                                    return { sum: total };  
42.                                };";  
具体可参见我的博客里面的一篇文章,希望对你有用,http://blog.csdn.net/zxz414644665/article/details/9986183
w_xin125 2013-09-25
  • 打赏
  • 举报
回复
用c#驱动 怎么实现?

1,746

社区成员

发帖
与我相关
我的任务
社区描述
MongoDB相关内容讨论区
社区管理员
  • MongoDB社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧