当前位置: 首页 > news >正文

mongTemplate实现group分组查询aggregation

MongoService封装

<T> List<T> group(Class<T> clazz, Aggregation aggregation,String documentName);

MongoServiceImpl实现类

@Overridepublic <T> List<T> group(Class<T> clazz, Aggregation aggregation,String documentName) {// 执行聚合查询//aggegation:所有条件的封装 , CTL_HEART_BEAT:集合/表 ,DeviceGroupByResult.class:接收数据对象AggregationResults<T> aggregate = mongoTemplate.aggregate(aggregation, documentName, clazz);//这里就很友好了return aggregate.getMappedResults();}

实践

             // 构建聚合查询Aggregation aggregation = Aggregation.newAggregation(Aggregation.match(Criteria.where("_id").ne(null)),Aggregation.group("otel_id").first("otel_id").as("otel_id").first("nel_id").as("nel_id"));List<Price> priceList = mongoService.group(Price.class, aggregation, "min_price");

注意管道的分组

在给定的聚合管道中,$group 阶段指定了 _id 字段作为分组依据,而且使用了 $otel_id 作为它的值。这意味着分组的结果将以 otel_id 字段的值作为分组的标识符。因此,在 $group 阶段的结果中,会产生一个 _id 字段,其值与原始文档中的 otel_id 字段的值相对应。换句话说,_id 字段是用于表示分组的唯一标识符,而不再保持原始字段名。

使用真正的字段映射

Aggregation aggregation = Aggregation.newAggregation(Aggregation.match(Criteria.where("otel_id").ne(null)),Aggregation.group("otel_id").count().as("count").first("field1").as("field1").first("field2").as("field2").first("field3").as("field3")// 添加其他需要返回的字段
);

http://www.lryc.cn/news/144040.html

相关文章:

  • 防御网络攻击风险的4个步骤
  • 相机SD卡数据丢失如何恢复?
  • Java小记-矩阵转置
  • 计网-控制平面
  • Markdown 扩展语法练习
  • ubuntu上安装boost库为SOMEIP的X86和ARM下编译做准备(编译两种版本)
  • [NSSCTF 2nd] NSS两周年纪念赛。
  • 【星戈瑞】FITC-PEG-N3在细胞示踪中的应用
  • 【Linux】【驱动】自动创建设备节点
  • 自实现getprocaddress(名称查找或者序号查找)
  • 如何DIY制作干洗店洗护小程序
  • 微前沿 | 第1期:强可控视频生成;定制化样本检索器;用脑电重建视觉感知;大模型鲁棒性评测
  • SQLite数据库C_C++接口(保姆级API应用 1.4W字)(全网最详细介绍,学完必掌握)
  • 倒计时:心理的镇静剂还是焦虑的火种?
  • 迅睿系统二开自定义函数和插件的自定义函数
  • 传统品牌如何通过3D虚拟数字人定制和动捕设备加速年轻化发展?
  • sql:SQL优化知识点记录(五)
  • 1.3 Metasploit 生成SSL加密载荷
  • redis windows 版本安装
  • 限流算法深入
  • java 基础知识 循环的几个题目
  • Spring Boot使用LocalDateTime、LocalDate作为入参
  • 第七周第七天学习总结 | MySQL入门及练习学习第二天
  • 【考研数学】线形代数第三章——向量 | 3)向量组秩的性质、向量空间、过渡矩阵
  • 【技术】SpringBoot Word 模板替换
  • java jni nv21和nv12互转
  • 后端面试话术集锦第二篇:spring boot面试话术
  • Doris中分区和分桶使用教程
  • 电脑不安装软件,怎么将手机文件传输到电脑?
  • vue3 publish 出现的问题