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

相关推荐

  • Python安装工具:setup.py

    Python安装工具:setup.pyPython是一种解释型、面向对象、动态数据类型的高级程序设计语言。它具有简洁、易读、易学等特点,在全球范围内得到了广泛的应用。Python在各种领域都有应用,在科学计算、人工智能、数据分析等领域得到了广泛的应用。但是,Python的安装过程却比较繁琐,需要安装各种依赖库、设置环境变量等。这时,Python安装工具——setup.py就派上用场了。

    2024-02-05
    81
  • mysql中的约束条件是什么啊_mysql删除约束

    mysql中的约束条件是什么啊_mysql删除约束1 #常见约束 2 3 /* 4 5 6 含义:一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性 7 8 9 分类:六大约束 10 NOT NULL:非空,用于保证该字段的值不能为空 1

    2023-03-20
    133
  • Python Dictionary实现数据存储与快速查询

    Python Dictionary实现数据存储与快速查询Python是一种快速、简单、易学的高级编程语言,适用于数据处理、数据分析等领域,并且有强大的第三方库支持。Python中的Dictionary是一种用于存储数据的数据结构,它可以轻松地实现数据存储和快速查询,并且易于使用和操作。

    2024-03-14
    75
  • mysql 事务管理_docker用户权限

    mysql 事务管理_docker用户权限第二十六章 管理事务处理 本章介绍什么是事务处理以及如何利用COMMIT和ROLLBACK语句来管理事务处理 事务处理 并非所有数据库引擎都支持事务处理 常用的InnoDB支持 事务处理可以用来维护数

    2023-06-19
    148
  • 巨杉Tech | SequoiaDB的同城双中心容灾实践「建议收藏」

    巨杉Tech | SequoiaDB的同城双中心容灾实践「建议收藏」1 需求背景 随着数据的大集中,银行纷纷建设了负责本行各个业务处理的生产数据中心,数据中心因其负责了全行的各个业务系统,所以其并发业务负荷能力和不间断运行是评价一个数据中心成熟与否的关键性指标。 近…

    2023-02-22
    127
  • Yarn架构「建议收藏」

    Yarn架构「建议收藏」Yarn架构(Master Slave) 进程角色: resourceManager(Master):任务调度和集群资源管理。 nodeManager(Slave):单个节点的资源管理。 applic

    2023-01-30
    136
  • 【万字长文】使用 LSM-Tree 思想基于.Net 6.0 C# 实现 KV 数据库(案例版)

    【万字长文】使用 LSM-Tree 思想基于.Net 6.0 C# 实现 KV 数据库(案例版)任何事情的开始都是艰难的,跨越时间的长河,一步一步的学习,才有了今天它的诞生,会了就是会了,那么,应对下一个相关问题就会容易许多,我对这样的壁垒称之为,知识的屏障。

    2023-05-28
    126
  • Python 中什么是鸭子类型?[亲测有效]

    Python 中什么是鸭子类型?[亲测有效]在本教程中,我们将学习鸭子类型。这是 Python 中的一个流行术语,来源于这样一句话:“如果它走路像鸭子,游泳像鸭子,看起来像鸭子,那么它很可能应该是一只鸭子。”

    2023-08-24
    130

发表回复

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