mongodb计算疑问
结构:{
name:"张三",sex:"男",scroe:[{lesson:"物理",total:60},{lesson:"化学",total:72}],
name:"李四",sex:"女",scroe:[{lesson:"物理",total:92},{lesson:"数学",total:81}]
name:"张三",sex:"男",scroe:[{lesson:"物理",total:60},{lesson:"化学",total:72}],
name:"李四",sex:"女",scroe:[{lesson:"物理",total:92},{lesson:"数学",total:81}]
}
我现在需要查询全班所有课程的总分数是多少,例如结果为:
物理:152
化学:72
数学:81
这个在Mongodb中应如何处理?麻烦大侠们别说用mapreduce或者appregate实现,我需要一个具体的计算方法?万分感激。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
感谢大神的回答,但还有此疑问,就是unwind我知道可以实现,但是我的数据量很大的时候,并且score数组太多的时候,unwind分解起来是不是性能不高呢?比如100w的记录,每个记录的score就算为10,那unwind出来就是1000w记录了,这个性能会有很大的影响吧?
用的group 分组
db.A.aggregate({ $unwind : "$scroe" },{$group:{_id:"$scroe.lesson",num:{$sum : "$scroe.total" }}},
{$project:{"name":"$_id","score":"$num",_id:0}}
)
大神,我的意思是具体怎么写呢?呵呵
回复
看这篇文章 http://my.oschina.net/chiyong/blog/289138
聚合的话肯定要用
mapreduce或者appregate。不用这个那你就在程序里面处理
我是用mongoosejs连接monogodb,用nodejs代码实现的。