mongodb计算疑问

滴滴晨曦 发布于 2015/06/11 13:52
阅读 252
收藏 0
 结构:{
        name:"张三",sex:"男",scroe:[{lesson:"物理",total:60},{lesson:"化学",total:72}],
        name:"李四",sex:"女",scroe:[{lesson:"物理",total:92},{lesson:"数学",total:81}]

   }

我现在需要查询全班所有课程的总分数是多少,例如结果为:

物理:152

化学:72

数学:81

这个在Mongodb中应如何处理?麻烦大侠们别说用mapreduce或者appregate实现,我需要一个具体的计算方法?万分感激。

加载中
0
lieefu
lieefu
我是用mongoosejs连接monogodb,用nodejs代码实现的。
0
寻梦2012
寻梦2012
聚合的话肯定要用mapreduce或者appregate。不用这个那你就在程序里面处理
寻梦2012
寻梦2012
回复 @ssswbf : 看这篇文章 http://my.oschina.net/chiyong/blog/289138
滴滴晨曦
大神,我的意思是具体怎么写呢?呵呵
0
故事心情

用的group 分组

db.A.aggregate({ $unwind : "$scroe" },{$group:{_id:"$scroe.lesson",num:{$sum : "$scroe.total" }}},
{$project:{"name":"$_id","score":"$num",_id:0}}  
)



滴滴晨曦
感谢大神的回答,但还有此疑问,就是unwind我知道可以实现,但是我的数据量很大的时候,并且score数组太多的时候,unwind分解起来是不是性能不高呢?比如100w的记录,每个记录的score就算为10,那unwind出来就是1000w记录了,这个性能会有很大的影响吧?
返回顶部
顶部