others linux服务器运维 django3 监控 k8s golang 数据库 大数据 前端 devops 理论基础 java oracle 运维日志

mongodb 集合查询

访问量:1453 创建时间:2021-04-29

概述

聚合运算的基本格式:

pipline=[$stage1,$stage2,...$stageN];
db.<COLLECTION>.aggregate(
    pipeline,
    {options}
);
步骤 作用 SQL等价运算符
$match 过滤 where
$project 投影 AS
$sort 排序 order by
$group 分组 group by
$skip/$limit 结果限制 skip/limit
$lookup 左外连接 left outer join

聚合查询可以用于OLAP(分析一段时间内的销售总额、均值;计算一段时间内的净利润;分析购买人的年龄分布;分析学生成绩分布;统计员工绩效)和OLTP(计算)

聚合查询实验

聚合实验一:总销量,计算到目前为止所有订单的总销售额。(数据再上一章导入)

> use mock
switched to db mock
> show tables
orders
> db.orders.aggregate([{$group:{_id:null,total:{$sum:"$total"}}}])
{ "_id" : null, "total" : NumberDecimal("44019609") }

订单金额汇总,查询2019年第一季度(1月1日~3月31日)已完成订单(completed)的订单总金额和订单总数:

db.orders.aggregate([
    //步骤1:匹配条件
    {$match:{status:"completed",orderDate:{$gte:ISODate("2019-01-01"),$lt:ISODate("2019-04-01")}}},
    //步骤二:聚合订单总金额,总运费,总数量
    {$group:{_id:null,total:{$sum:"$total"},shippingFee:{$sum:"$shippingFee"},count:{$sum:1}}},
    //计算总金额
    {$project:{grandTotal:{$add:["$total","$shippingFee"]},count:1,_id:0}}
])
##查询结果
{ "count" : 5875, "grandTotal" : NumberDecimal("2636376.00") }
登陆评论: 使用GITHUB登陆