分组指的是将满足相同条件的数据变为一条(组)数据
比如createTime 创建时间为 2020年的11月有10条数据,若根据createTime 为2020年11月分组,分组后createTime字段唯一,其他字段不一定唯一,其他字段怎么显示呢?这里要用到聚合函数
聚合指的是多个数据如何取值
常见的聚合函数有:sum(求和),max(取最大值),min(最小值),avg(平均值),first(第一个),last(最后一个),count(记录条数)等
本例聚合的所有userId都相同,所以使用first函数即可
mongoDB文档:https://docs.mongodb.com/v2.4/reference/operator/aggregation/project/
一.需求统计当前用户过去一年中每个月新增联系人(联系人表存储在mongoDB)二.分析:根据createTime 中的月分组,聚合返回字段有:用户id,分组月份,该月记录条数三:mongo 查询语句说明:$project:映射,查询的字段,1显示,0不显示$match:过滤,查询条件(相当于sql中的where)$group:分组,这里用到了 mongo 自带的 $month函数,可以根据createTime中的月分组注意分页、排序等语句可以在后面累加;映射,过滤,分组,分页,排序
db.mogOrderInfo.find({
"itemId":"9140040075",
"orderTime":{"$gte":ISODate("2019-07-09T22:00:00.000Z"),"$lte":ISODate("2019-07-10T04:00:00.000Z")},
"showStatus":{$in:[1,2,5]}...
文章目录1 摘要2 按照固定字段分组查询3 分组分页查询4 按照日期分组查询(字段为精确到秒的时间戳)5 按照日期分组查询(字段为精确到毫秒的时间戳)6 按照日期分组查询(字段为Date)7 按照自定义时间区间分组查询8 数据库实体类及其他相关类8.1 数据库实体类8.2 统计结果类8.3 日期分组信息类8.4 获取日期分组信息的方法9 推荐参考资料10 本次提交记录
MongoDb 如何实现聚合查询?分组查询?分组分页查询?自定义时间区间查询?时间格式转换查询?不要慌,本文将介绍基于 S
简单+进阶简单准备:查询:删除:增加:修改:思路进阶:查询(指定字段过滤)修改(多层数组精确修改)讨论总结
注:本文只讲在java中的使用,并且只简单讲一下本人在开发中遇到的一部分 并不完全概括 在cmd中的请自行查看其他博主.
想用它就得引入它:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring
Spring+Mongodb在查询数据时,是可以指定查询集合的。那么现在的需求是按月份查询数据。
一、在serviceImpl上,先指定构造时间集合字符串
@Resource
private MongoTemplate mongoTemplate;
private String monthCollection = String.format("%s_warningInfo", formatDat...
今天练习在java中使用mongodb,进行分组,刚开始没有思路,后来通过查资料,大概写了一个demo,以下是分组在java中用到的group分组代码:
这是mongodb中的数据:
这是java中的代码:
String[] field = {"teacher_name","teacher_synopsis"}; //分组的依据,根据那些参数进行分组
Aggregation aggregat...
Due to limitations of the com.mongodb.BasicDocument, you can't add a second '$and' expression specified as '$and :
错误原因:在一个 Criteria 对象中调用了多次 andOperator() 方法
使用mongoTemplate实现...
Java mongotemplate 的聚合函数可以通过 Aggregation 类来实现。以下是一些常见的聚合函数:
1. `$match`:选择符合条件的文档。
```java
Aggregation.match(Criteria.where("name").is("John"))
2. `$group`:将文档按照某个字段分组,并对每个组进行聚合操作。
```java
Aggregation.group("name").sum("score").as("totalScore")
3. `$project`:选择需要输出的字段。
```java
Aggregation.project("name", "age")
4. `$sort`:按照某个字段排序。
```java
Aggregation.sort(Sort.Direction.DESC, "score")
5. `$limit`:限制输出文档的数量。
```java
Aggregation.limit(10)
6. `$skip`:跳过指定数量的文档。
```java
Aggregation.skip(5)
以上只是一些常见的聚合函数,还有很多其他的聚合函数,可以根据具体需求来选择。
git下载,上传代码到GitLab ; Untracked files (use “git add <file>...“ to include in what will be committed)
34003