返回顶部
首页 > 资讯 > 数据库 >MongoDB中如何聚合统计计算
  • 567
分享到

MongoDB中如何聚合统计计算

2024-04-02 19:04:59 567人浏览 泡泡鱼
摘要

这篇文章将为大家详细讲解有关mongoDB中如何聚合统计计算,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。我们一般通过表达式$sum来计算总和。因为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中如何聚合统计计算”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: MongoDB中如何聚合统计计算

本文链接: https://lsjlt.com/news/56424.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MongoDB中如何聚合统计计算
    这篇文章将为大家详细讲解有关MongoDB中如何聚合统计计算,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。我们一般通过表达式$sum来计算总和。因为MongoDB的文档有...
    99+
    2024-04-02
  • Laravel中如何用聚合函数计算总数
    本文小编为大家详细介绍“Laravel中如何用聚合函数计算总数”,内容详细,步骤清晰,细节处理妥当,希望这篇“Laravel中如何用聚合函数计算总数”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。假如有电子邮件订阅...
    99+
    2023-07-05
  • 如何在Couchbase中实现数据聚合和汇总计算
    在Couchbase中可以通过使用N1QL查询语言来实现数据聚合和汇总计算。以下是一个简单的示例: 数据聚合: SELEC...
    99+
    2024-04-02
  • Kylin如何实现快速查询和聚合计算
    Kylin是一个开源的分布式分析引擎,可以通过预先计算和预聚合数据来实现快速查询和聚合计算。其主要特点包括: Cube预计算:K...
    99+
    2024-04-02
  • 如何利用聚合函数实现复杂统计
    使用聚合函数可以实现各种复杂的统计分析,下面是一些常见的例子: 计算平均值:使用聚合函数AVG()可以计算一列数据的平均值。 计算总和:使用聚合函数SUM()可以计算一列数据的总和。 计算最大值和最小值:使用聚合函数MAX()和...
    99+
    2024-08-03
    sql server
  • 如何使用SQL语句在MySQL中进行数据聚合和统计?
    如何使用SQL语句在MySQL中进行数据聚合和统计?在进行数据分析和统计时,数据聚合和统计是非常重要的步骤。MySQL作为一个功能强大的关系型数据库管理系统,提供了丰富的聚合和统计函数,可以很方便地进行数据聚合和统计操作。本文将介绍使用SQ...
    99+
    2023-12-17
    SQL 统计 数据聚合
  • 检索 MongoDB 聚合上每个日期的项目计数
    问题内容 我有一个包含事件的集合。每个事件都有精确到毫秒的时间戳。我想将每天的事件分组。 例如: 我有 key value _id 1112223334445...
    99+
    2024-02-06
  • PHP 中使用 Elasticsearch 进行数据清洗与聚合计算
    概要:本文将介绍如何在 PHP 中使用 Elasticsearch 进行数据清洗和聚合计算。Elasticsearch 是一个强大而灵活的分布式搜索和分析引擎,它可以帮助我们通过对数据进行索引和查询来进行数据清洗和聚合计算。本文将通过具体的...
    99+
    2023-10-21
    PHP 数据清洗 elasticsearch 聚合计算
  • MongoDB与边缘计算的结合实践与架构设计
    随着物联网和云计算的快速发展,边缘计算逐渐成为新的热点领域。边缘计算是指将数据处理和计算能力从传统的云计算中心转移到物理设备的边缘节点上,以提高数据处理的效率和减少延迟。而MongoDB作为一种强大的NoSQL数据库,其在边缘计算领域的应用...
    99+
    2023-11-02
    边缘计算 MongoDB 架构设计
  • 聚合函数在统计报告生成中的策略
    在统计报告生成中,聚合函数是非常重要的工具,它可以用来对数据进行汇总和计算,从而得出关键指标和结论。以下是一些在统计报告生成中使用聚合函数的策略: 选择合适的聚合函数:在选择聚合函数时,需要考虑到数据的性质和需要分析的内容。常用的聚合函...
    99+
    2024-08-03
    sql server
  • MongoDB 中怎么计算子查询
    这篇文章给大家介绍MongoDB 中怎么计算子查询,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。MongoDB在某些方面确实比关系型数据库更强 (比如对追...
    99+
    2024-04-02
  • mongodb中怎么统计记录
    mongodb中统计记录的方法:1、打开命令行,使用“mongo”命令连接本地MongoDB服务;2、使用“show dbs”命令查看可使用的数据库信息;3、再使用“use 数据库名称”切换到目标数据库中;4、通过“show collect...
    99+
    2024-04-02
  • 详解Mysql日期格式并聚合统计示例
    目录介绍准备工作实现原理实际操作按天统计按周统计按月统计介绍 在实际的开发中,我们通常需要对数据进行分组统计,而时间日期是一个常见的分组条件。在 mysql 中,我们可以使用日期格式化的函数将日期转换成指定格式的字符串,...
    99+
    2023-04-23
    Mysql日期格式聚合统计 Mysql 聚合统计
  • Cassandra数据的分布式聚合和计算怎么实现
    Cassandra是一个分布式数据库系统,可以通过将数据分布在多个节点上来实现分布式聚合和计算。以下是实现分布式聚合和计算的一些常见...
    99+
    2024-05-11
    Cassandra
  • 如何在mongoDB中利用java处理聚合函数
    本篇文章给大家分享的是有关如何在mongoDB中利用java处理聚合函数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。需要对document中...
    99+
    2024-04-02
  • MongoDB如何才能优雅且合理地设计?
    最近刚入坑MongoDB,感觉比MySQL扩展性更强,一张表可以存储特别复杂的字段,这点我非常喜欢,最近需要用MongoDB存储一篇文章的数据,文章的评论和回复的数据存储是个大问题,设计了好久感觉我设计的字段好复杂,还不太合理,请求各位...
    99+
    2017-12-06
    MongoDB如何才能优雅且合理地设计?
  • 如何设置Win7系统计算机计划任务
    我们经常可以看到启动项目的词。事实上,这是我们计算机中的计划任务设置。当我们的计算机启动时,这些计划任务将随Win7系统启动。有些任务可能必须启动,但有些则不需要。在这方面,我们可以设置这些计划任务。让我们看看详细的操作。首先,我们可以在电...
    99+
    2023-07-10
  • CososCreator (Android)-AppLovin MAX 广告聚合平台接入+Firebase统计
    CososCreator 2.4.4 Android Studio :4.2.1 接入SDK有:接max聚合及中介平台(Admob,FB, applovin,pangle,mintegral,vungle,unity),和Firebase ...
    99+
    2023-09-09
    android android studio ide
  • Flink实现特定统计的归约聚合reduce操作
    如果说简单聚合是对一些特定统计需求的实现,那么 reduce 算子就是一个一般化的聚合统计操作了。从大名鼎鼎的 MapReduce 开始,我们对 reduce 操作就不陌生:它可以对...
    99+
    2023-02-08
    Flink归约聚合 Flink reduce
  • Django配合Bootstrap如何制作计算器
    这篇文章主要介绍了Django配合Bootstrap如何制作计算器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。准备工作创建一个应用添加应用...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作