使用mongo聚合分组查询获取每一组的时间最大的一条数据

简介: 使用mongo聚合分组查询获取每一组的时间最大的一条数据

mongo聚合


使用mongo的.aggregate方法, 类似一个聚合流水线的一个过程, 可以理解为文档经过多次管道阶段最后生成的结果, 可以直接看mongo aggregate官方文档 的一张图

将整体文档经过多次管道最后生成想要的文档这个原理


官方也提供了很多 聚合管道运算符, 用到的朋友可以直接查询


讲一下我自己解决问题写的一条语句

db.getCollection('city').aggregate([
    {"$match": {"date": {"$lte":20190313}}}, 
    {"$sort": {"date": -1}},
    {"$group": {_id: "$city_id",     
        firstDate: { $first: "$$ROOT" }}
    }]
)

简单解释一下, 就是我需要求出按城市id聚合分组求日期小于 20190313的组内数据并按照日期进行倒序求第一条的所有数据, 过程就是

    1 先找出日期小于 20190313的所有文档;
    2 按照日期倒序进行排序
    3 按照city_id进行聚合并求出第一个文档的所有内容, 内容会放入 firstDate 里面


目录
相关文章
|
SQL NoSQL 关系型数据库
MongoDB复杂分组聚合查询1
MongoDB复杂分组聚合查询1
542 0
|
5月前
|
存储 SQL 缓存
MySQL设计规约问题之为什么要将大字段、访问频率低的字段拆分到单独的表中存储
MySQL设计规约问题之为什么要将大字段、访问频率低的字段拆分到单独的表中存储
|
6月前
|
SQL 安全 数据挖掘
Elasticsearch如何聚合查询多个统计值,如何嵌套聚合?并相互引用,统计索引中某一个字段的空值率?语法是怎么样的?
Elasticsearch聚合查询用于复杂数据分析,包括统计空值率。示例展示了如何计算字段`my_field`非空非零文档的百分比。查询分为三步:总文档数计数、符合条件文档数计数及计算百分比。聚合概念涵盖度量、桶和管道聚合。脚本在聚合中用于动态计算。常见聚合类型如`sum`、`avg`、`date_histogram`等。组合使用可实现多值统计、嵌套聚合和空值率计算。[阅读更多](https://zhangfeidezhu.com/?p=515)
314 0
Elasticsearch如何聚合查询多个统计值,如何嵌套聚合?并相互引用,统计索引中某一个字段的空值率?语法是怎么样的?
|
7月前
|
SQL 搜索推荐 数据库
8. 聚合查询
8. 聚合查询
|
7月前
|
存储 数据挖掘 数据库
InfluxDB的连续查询与数据聚合技术详解
【4月更文挑战第30天】InfluxDB的连续查询(CQ)功能用于自动定时聚合时间序列数据,适用于数据降采样、实时分析和告警通知等场景。CQ使用InfluxQL编写,例如,每1小时对`cpu_usage`测量值计算主机的平均CPU使用率并存入`cpu_usage_hourly`。InfluxDB提供多种聚合函数如`MEAN()`, `MAX()`, 支持滑动窗口聚合等复杂操作,助力时间序列数据分析和趋势预测。通过CQ,用户能高效管理和利用时间序列数据信息。
|
7月前
|
关系型数据库 MySQL 数据库
『 MySQL数据库 』聚合统计
『 MySQL数据库 』聚合统计
|
7月前
|
缓存 负载均衡 NoSQL
对于大表按主键+时间+group by的这种时间范围聚合查询的场景
对于大表按主键+时间+group by的这种时间范围聚合查询的场景
93 2
|
关系型数据库 MySQL
PgSQL——通过某字段聚合查询另一个字段的集合
PgSQL——通过某字段聚合查询另一个字段的集合
|
SQL NoSQL 关系型数据库
MongoDB复杂分组聚合查询2
MongoDB复杂分组聚合查询2
127 0
|
分布式计算 JavaScript 前端开发
MongoDB复杂分组聚合查询3
MongoDB复杂分组聚合查询3
144 0