MongoDB 聚合分类「建议收藏」

MongoDB 聚合分类「建议收藏」增加一个集合用于储存股票交易记录 db.transactions.insert([ { symbol: “600519”, qty: 100, price: 567.4, currency: “CN…

MongoDB 聚合分类

db.transactions.insert([
    {
        symbol: "600519",
        qty: 100,
        price: 567.4,
        currency: "CNY"
    },
    {
        symbol: "AMZN",
        qty: 1,
        price: 1377.5,
        currency: "USD"
    },
    {
        symbol: "AAPL",
        qty: 2,
        price: 150.7,
        currency: "USD"
    }
])

代码100分

按照交易货币来分组

代码100分db.transactions.aggregate([
 {
  $group:{
   _id:"$currency"
  }
 }
])
{ "_id" : "CNY" }
{ "_id" : "USD" }

使用聚合操作符计算分组聚合值

# totalQty 交易总股数
# totalNotional 交易总金额
# avgPrice 平均股价
# count 数量
# maxNotional 最大交易金额
# maxNotional 最小交易金额
db.transactions.aggregate([
    {
        $group: {
            _id: "$currency",
            totalQty: {
                $sum: "$qty"
            },
            totalNotional: {
                $sum: {
                    $multiply: ["$price", "$qty"]
                }
            },
            avgPrice: {
                $avg: "$price"
            },
            count: {
                $sum: 1
            },
            maxNotional: {
                $max: {
                    $multiply: [
                        "$price",
                        "$qty"
                    ]
                }
            },
            minNotional: {
                $min: {
                    $multiply: [
                        "$price",
                        "$qty"
                    ]
                }
            }
        }
    }
])
{ "_id" : "CNY", "totalQty" : 100, "totalNotional" : 56740, "avgPrice" : 567.4, "count" : 1, "maxNotional" : 56740, "minNotional" : 56740 }
{ "_id" : "USD", "totalQty" : 3, "totalNotional" : 1678.9, "avgPrice" : 764.1, "count" : 2, "maxNotional" : 1377.5, "minNotional" : 301.4 }

使用聚合操作符计算所有文档聚合值 将 _id 设置为 null 即可

代码100分db.transactions.aggregate([
    {
        $group: {
            _id: null,
            totalQty: {$sum: "$qty"},
            totalNotional: {$sum: {$multiply: ["$price", "$qty"]}},
            avgPrice: {$avg: "$price"},
            count: {$sum: 1},
            maxNotional: {$max: {$multiply: ["$price","$qty"]}},
            minNotional: {$min: {$multiply: ["$price","$qty"]}}
        }
    }
])
{ "_id" : null, "totalQty" : 103, "totalNotional" : 58418.9, "avgPrice" : 698.5333333333333, "count" : 3, "maxNotional" : 56740, "minNotional" : 301.4 }

使用聚合管道创建数组字段 将同一个组里面的 symbol 字段,都 push 到一个新字段 symbols

db.transactions.aggregate([
    {
        $group: {
            _id: "$currency",
            symbols:{$push:"$symbol"}
        }
    }
])
{ "_id" : "CNY", "symbols" : [ "600519" ] }
{ "_id" : "USD", "symbols" : [ "AMZN", "AAPL" ] }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/9133.html

(0)
上一篇 2023-02-14
下一篇 2023-02-15

相关推荐

  • PostgreSQL 最常用的插件「建议收藏」

    PostgreSQL 最常用的插件「建议收藏」PostgreSQL , 插件

    2023-06-14
    135
  • mysql8.0文档_Mysql事务

    mysql8.0文档_Mysql事务以下文章来源于MySQL解决方案工程师,作者徐轶韬 MySQL8.0里包括一款功能——CPU资源分组管理。它实现的目的是将CPU资源分组,并且赋予运行不同类型的查询。通过它可以解决DBA的一些痛点,…

    2023-01-31
    142
  • mysqldump数据库备份_mysql备份整个数据库

    mysqldump数据库备份_mysql备份整个数据库mysqldump -h主机IP -u用户名 -p密码 -w "字段名>=字段值" 数据库名 表名 > 文件路径/文件名 注意: "字段名>=字段值&q

    2023-02-02
    132
  • 安装Scrapy的步骤

    安装Scrapy的步骤Scrapy是一个纯Python的开源爬虫框架,可用于抓取网站数据。Scrapy是一个高度定制化的爬虫工具,可以自由设置各种参数,满足各种需求。如果您想学习Python爬虫,那么Scrapy是一个值得学习的爬虫框架。

    2024-04-21
    67
  • SqlServer2016 startengine错误的解决方式整理 – unreal

    SqlServer2016 startengine错误的解决方式整理 – unreal因为某些需要,最近在安装SqlServer2016,但总是安装失败,按照网上各路大佬的解决方案都没有成功。报错提示为两个:无法获取数据库引擎句柄,无法恢复数据库引擎服务。按照网上做法,使用admini

    2023-03-06
    167
  • Python如何清空列表

    Python如何清空列表
    列表是Python中非常常用的一种数据类型,它可以容纳多个元素,并且可以通过索引访问到其中的每个元素。
    在Python中,我们经常会遇到需要清空列表数据的情况,比如说在重新使用列表之前,需要将之前的数据清空掉。
    本文将介绍Python中常用的几种清空列表的方法,并且对它们进行详细的讲解。

    2024-05-12
    91
  • Redis知识点(一)[亲测有效]

    Redis知识点(一)[亲测有效]Redis 是什么 总结下 Redis 的定义和特点: Redis 是 C 语言开发的一个开源的(遵从 BSD 协议)高性能键值对(key-value)的内存数据库,可以用作数据库、缓存、消息中间件…

    2023-02-13
    154
  • mysql开发规范与使用技巧总结_警察工作总结

    mysql开发规范与使用技巧总结_警察工作总结命名规范 1.库名、表名、字段名必须使用小写字母,并采用下划线分割。 a)MySQL有配置参数lower_case_table_names,不可动态更改,Linux系统默认为 0,即库表名以实际情况存

    2022-12-18
    150

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注