首页 / MONGODB / MongoDB 聚合分类
MongoDB 聚合分类
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MongoDB 聚合分类,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1820字,纯文字阅读大概需要3分钟。
内容图文
增加一个集合用于储存股票交易记录
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"
}
])
按照交易货币来分组
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 即可
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" ] }
内容总结
以上是互联网集市为您收集整理的MongoDB 聚合分类全部内容,希望文章能够帮你解决MongoDB 聚合分类所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。
来源:【匿名】