我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MongoDB中如何聚合统计计算

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MongoDB中如何聚合统计计算

这篇文章将为大家详细讲解有关MongoDB中如何聚合统计计算,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

我们一般通过表达式$sum来计算总和。因为MongoDB的文档有数组字段,所以可以简单的将计算总和分成两种:

1,统计符合条件的所有文档的某个字段的总和;

2,统计每个文档的数组字段里面的各个数据值的和。这两种情况都可以通过$sum表达式来完成。

以上两种情况的聚合统计,分别对应与聚合框架中的 $group 操作步骤和 $project 操作步骤。

1.$group

直接看例子吧。

Case 1

测试集合mycol中的数据如下:

{
 title: 'MongoDB Overview', 
 description: 'MongoDB is no sql database',
 by_user: 'runoob.com',
 url: 'http://www.runoob.com',
 tags: ['mongodb', 'database', 'NoSQL'],
 likes: 100
},
{
 title: 'NoSQL Overview', 
 description: 'No sql database is very fast',
 by_user: 'runoob.com',
 url: 'http://www.runoob.com',
 tags: ['mongodb', 'database', 'NoSQL'],
 likes: 10
},
{
 title: 'Neo4j Overview', 
 description: 'Neo4j is no sql database',
 by_user: 'Neo4j',
 url: 'http://www.neo4j.com',
 tags: ['neo4j', 'database', 'NoSQL'],
 likes: 750
}

现在我们通过以上集合计算每个作者所写的文章数,使用aggregate()计算

db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])

查询结果如下:


{
 "_id" : "Neo4j",
 "num_tutorial" : 1
},


{
 "_id" : "runoob.com",
 "num_tutorial" : 2
}

Case 2

统计每个作者被like的总和,计算表达式:

db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])

查询结果如下;


{
 "_id" : "Neo4j",
 "num_tutorial" : 750
},


{
 "_id" : "runoob.com",
 "num_tutorial" : 110
}

Case 3

上面例子有些简单,我们再丰富一下,测试集合sales的数据如下:

{ "_id" : 1, "item" : "abc", "price" : 10, "quantity" : 2, "date" : ISODate("2014-01-01T08:00:00Z") }
{ "_id" : 2, "item" : "jkl", "price" : 20, "quantity" : 1, "date" : ISODate("2014-02-03T09:00:00Z") }
{ "_id" : 3, "item" : "xyz", "price" : 5, "quantity" : 5, "date" : ISODate("2014-02-03T09:05:00Z") }
{ "_id" : 4, "item" : "abc", "price" : 10, "quantity" : 10, "date" : ISODate("2014-02-15T08:00:00Z") }
{ "_id" : 5, "item" : "xyz", "price" : 5, "quantity" : 10, "date" : ISODate("2014-02-15T09:05:00Z") }

需要完成的目标是,基于日期分组,统计每天的销售额,聚合公式为:

db.sales.aggregate(
 [
  {
  $group:
   {
   _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } },
   totalAmount: { $sum: { $multiply: [ "$price", "$quantity" ] } },
   count: { $sum: 1 }
   }
  }
 ]
)

查询结果是:

{ "_id" : { "day" : 46, "year" : 2014 }, "totalAmount" : 150, "count" : 2 }
{ "_id" : { "day" : 34, "year" : 2014 }, "totalAmount" : 45, "count" : 2 }
{ "_id" : { "day" : 1, "year" : 2014 }, "totalAmount" : 20, "count" : 1 }

2.$project阶段

Case 4

假设存在一个 students 集合,其数据结构如下:

{ "_id": 1, "quizzes": [ 10, 6, 7 ], "labs": [ 5, 8 ], "final": 80, "midterm": 75 }
{ "_id": 2, "quizzes": [ 9, 10 ], "labs": [ 8, 8 ], "final": 95, "midterm": 80 }
{ "_id": 3, "quizzes": [ 4, 5, 5 ], "labs": [ 6, 5 ], "final": 78, "midterm": 70 }

现在的需求是统计每个学生的 平常的测验分数总和、实验分数总和、期末其中分数总和。

db.students.aggregate([
 {
  $project: {
  quizTotal: { $sum: "$quizzes"},
  labTotal: { $sum: "$labs" },
  examTotal: { $sum: [ "$final", "$midterm" ] }
  }
 }
])

其查询输出结果如下:

{ "_id" : 1, "quizTotal" : 23, "labTotal" : 13, "examTotal" : 155 }
{ "_id" : 2, "quizTotal" : 19, "labTotal" : 16, "examTotal" : 175 }
{ "_id" : 3, "quizTotal" : 14, "labTotal" : 11, "examTotal" : 148 }

关于“MongoDB中如何聚合统计计算”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MongoDB中如何聚合统计计算

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Laravel中如何用聚合函数计算总数

本文小编为大家详细介绍“Laravel中如何用聚合函数计算总数”,内容详细,步骤清晰,细节处理妥当,希望这篇“Laravel中如何用聚合函数计算总数”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。假如有电子邮件订阅
2023-07-05

如何利用聚合函数实现复杂统计

使用聚合函数可以实现各种复杂的统计分析,下面是一些常见的例子:计算平均值:使用聚合函数AVG()可以计算一列数据的平均值。计算总和:使用聚合函数SUM()可以计算一列数据的总和。计算最大值和最小值:使用聚合函数MAX()和MIN()可以计算
如何利用聚合函数实现复杂统计
2024-08-03

iterate在数据聚合统计中的作用

在数据聚合统计中,iterate函数扮演着重要的角色,它允许我们实现自定义的聚合运算,从而扩展了数据聚合的能力。以下是关于iterate在数据聚合统计中作用的详细说明:迭代聚合函数的基本概念迭代聚合函数是一种通过遍历数据集并逐步计算聚合
iterate在数据聚合统计中的作用
2024-09-22

如何使用SQL语句在MySQL中进行数据聚合和统计?

如何使用SQL语句在MySQL中进行数据聚合和统计?在进行数据分析和统计时,数据聚合和统计是非常重要的步骤。MySQL作为一个功能强大的关系型数据库管理系统,提供了丰富的聚合和统计函数,可以很方便地进行数据聚合和统计操作。本文将介绍使用SQ
如何使用SQL语句在MySQL中进行数据聚合和统计?
2023-12-17

PHP 中使用 Elasticsearch 进行数据清洗与聚合计算

概要:本文将介绍如何在 PHP 中使用 Elasticsearch 进行数据清洗和聚合计算。Elasticsearch 是一个强大而灵活的分布式搜索和分析引擎,它可以帮助我们通过对数据进行索引和查询来进行数据清洗和聚合计算。本文将通过具体的
2023-10-21

聚合函数在统计报告生成中的策略

在统计报告生成中,聚合函数是非常重要的工具,它可以用来对数据进行汇总和计算,从而得出关键指标和结论。以下是一些在统计报告生成中使用聚合函数的策略:选择合适的聚合函数:在选择聚合函数时,需要考虑到数据的性质和需要分析的内容。常用的聚合函数包括
聚合函数在统计报告生成中的策略
2024-08-03

Java中计算集合中元素的出现次数统计

这篇文章介绍了Java中计算集合中元素出现次数统计的多种方法。可以通过使用HashMap、Stream和Collectors或者ApacheCommonsCollections库来实现。具体选择哪种方法取决于集合大小、性能需求和限制。这篇文章提供了具体代码示例,供读者参考。
Java中计算集合中元素的出现次数统计
2024-04-02

递归查询在数据聚合统计中的性能优化

递归查询在数据聚合统计中可能会导致性能问题,因为它需要多次遍历数据集。为了优化递归查询的性能,可以采取以下策略:使用缓存:将递归查询的结果缓存起来,这样在后续的查询中,如果需要相同的数据,就可以直接从缓存中获取,而不需要再次进行递归查询。这
递归查询在数据聚合统计中的性能优化
2024-09-08

MongoDB如何才能优雅且合理地设计?

最近刚入坑MongoDB,感觉比MySQL扩展性更强,一张表可以存储特别复杂的字段,这点我非常喜欢,最近需要用MongoDB存储一篇文章的数据,文章的评论和回复的数据存储是个大问题,设计了好久感觉我设计的字段好复杂,还不太合理,请求各位大佬指点一二,希望能参考
MongoDB如何才能优雅且合理地设计?
2017-12-06

计算机中磁盘未分配的如何合并

这篇文章给大家分享的是有关计算机中磁盘未分配的如何合并的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。合并方法:首先选择“我的电脑”,点击鼠标右键,选择“管理”;然后在弹出的窗口中选择“磁盘管理”选项;接着鼠标右键
2023-06-15

如何设置Win7系统计算机计划任务

我们经常可以看到启动项目的词。事实上,这是我们计算机中的计划任务设置。当我们的计算机启动时,这些计划任务将随Win7系统启动。有些任务可能必须启动,但有些则不需要。在这方面,我们可以设置这些计划任务。让我们看看详细的操作。1.首先,我们可以
2023-07-10

如何通过php接口和ECharts实现统计图的数据分组和聚合

如何通过PHP接口和ECharts实现统计图的数据分组和聚合随着数据分析和可视化需求的增加,通过接口和ECharts实现统计图的数据分组和聚合变得越来越重要。在本文中,我们将介绍如何使用PHP编写接口,并结合ECharts实现数据的分组和聚
如何通过php接口和ECharts实现统计图的数据分组和聚合
2023-12-17

如何在MongoDB中实现数据的分布式计算功能

如何在MongoDB中实现数据的分布式计算功能在大数据时代,分布式计算已经成为了处理海量数据的必备技术。MongoDB作为一个流行的NoSQL数据库,也可以利用其分布式特性来进行数据的分布式计算。本文将介绍如何在MongoDB中实现数据的分
2023-10-22

如何用php回溯算法计算组合总和

本篇内容主要讲解“如何用php回溯算法计算组合总和”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何用php回溯算法计算组合总和”吧!给定一个数组 candidates 和一个目标数 targe
2023-06-20

计算机如何升级windows10系统

有一些朋友担忧再次应用win7系统得话会出现安全隐患,为了更好地应用更为有确保,要想给电脑更新windows10.那麼实际计算机如何升级windows10系统?下边教下大伙儿具体的升级windows10系统实例教程.系统版本号:Win103
2023-07-10

编程热搜

目录