美文网首页mongodb
mongo聚合查询

mongo聚合查询

作者: freedom117 | 来源:发表于2022-04-28 10:45 被阅读0次

1.概述

MongoDB 聚合框架(Aggregation Framework)是一个计算框架,它可以:
• 作用在一个或几个集合上;
• 对集合中的数据进行的一系列运算;
• 将这些数据转化为期望的形式;
● 从效果而言,聚合框架相当于 SQL 查询中的:
• GROUP BY
• LEFT OUTER JOIN
• AS等

2.管道

管道(Pipeline)和步骤(Stage) ● 整个聚合运算过程称为管道(Pipeline),它是由多个步骤(Stage)组成的,
每个管道:
• 接受一系列文档(原始数据);
• 每个步骤对这些文档进行一系列运算;
• 结果文档输出给下一个步骤;

$match 过滤 WHERE
$project 投影 AS
$sort 排序 ORDER BY
$group 分组 GROUP BY
$skip/$limit 结果限制 SKIP/LIMIT
$lookup 左外连接 LEFT OUTER JOIN
$unwind 展开数组 N/A
$graphLookup 图搜索 N/A
$facet/$bucket 分面搜索 N/A

例子 mysql

SELECT
FIRST_NAME AS `名`,
LAST_NAME AS `姓`
FROM Users
WHERE GENDER = '男'
SKIP 100
LIMIT 20

SELECT DEPARTMENT,
COUNT(NULL) AS EMP_QTY
FROM Users
WHERE GENDER = '女'
GROUP BY DEPARTMENT HAVING
COUNT(*) < 10

mongo

db.users.aggregate([
{$match: {gender: ’’男”}}, {$skip: 100}, {$limit: 20}, {$project: {'名': '$first_name', '姓': '$last_name'
}}
]);

db.users.aggregate([
{$match: {gender: '女'}}, {$group: { _id: '$DEPARTMENT’,
emp_qty: {$sum: 1}
}}, {$match: {emp_qty: {$lt: 10}}}
]);

3.具体实例

1.利用聚合查询来计算总销售额

db.orders.aggregate([
{$group:{
        _id:null,//用null将所有数据分到同一组,实现对全部数据的操作。
        total:{$sum: "$total"}
    }
  }
])

2.利用聚合查询来计算订单金额汇总

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 } } 
])

5.通过 Compass 可以更加直观的来创建复杂的聚合计算管道

image.png
image.png

直接用Compass 生成java代码简单可靠。

相关文章

  • mongo聚合查询

    1.概述 MongoDB 聚合框架(Aggregation Framework)是一个计算框架,它可以:• 作用在...

  • Mongodb 的高级查询

    关键词:mongodb, mongo, project, group, aggregate, 聚合管道, 高级查询...

  • [日记]Mongo聚合查询

    collection 1 使用mongo查询一个对象数组中元素属性为特定值的数据,期望查询结果为: 语句: 2 若...

  • mongo $match查询日期结果错误

    今天使用mongo聚合查询某个时间段的数据 发现返回结果错误 经过排查问题 在聚合中$match查询和平常使用fi...

  • mongo回顾(八:聚合查询二)

    上一篇简单的介绍了mongo的聚合查询,并举例了match与lookup的使用,今天的话继续介绍聚合查询与Mong...

  • mongo回顾(七:聚合查询)

    上一篇简单介绍了mongo的增删改查,今天来聊聊mongo的聚合操作 什么是 MongoDB 聚合框架 Mongo...

  • mongo聚合

    mongo聚合

  • 更新mongo版本

    换了电脑,软件几乎都是安装的最新版本的,结果mongo版本和项目不适用,原因是Mongo的聚合查询要强制使用c...

  • 整理最近用的Mongo查询语句

    背景 最近做了几个规则逻辑。用到mongo查询比较多,就是查询交易信息跑既定规则筛选出交易商户,使用聚合管道进行统...

  • mongo回顾(九:聚合查询三)

    mongo的聚合查询操作符是比较多的,平常也无需全部用法都记住,有个大体概念后,使用时翻阅下官方文档也是一个不错的...

网友评论

    本文标题:mongo聚合查询

    本文链接:https://www.haomeiwen.com/subject/qizsrltx.html