mongodb计算疑问

发布于 2021-11-26 08:11:38 字数 415 浏览 688 评论 6

 结构:{
        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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

眼眸 2021-12-01 08:41:45

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

左岸枫 2021-12-01 08:34:11

用的group 分组

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

成熟稳重的好男人 2021-12-01 08:30:01

大神,我的意思是具体怎么写呢?呵呵

半世蒼涼 2021-11-30 21:38:18

回复
看这篇文章 http://my.oschina.net/chiyong/blog/289138

孤檠 2021-11-30 18:18:15

聚合的话肯定要用
mapreduce或者appregate。不用这个那你就在程序里面处理

苍暮颜 2021-11-30 08:00:45

我是用mongoosejs连接monogodb,用nodejs代码实现的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文