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

MongoDB复杂聚合查询与java中MongoTemplate的api对应

MongoDB聚合json脚本

db.getCollection("202303_refund").aggregate([{"$match": {"courseType": "常规班课","teacherRefundReasonCheck": true,"teacherId": {"$in": [7544]},"createTime": "2023-09-08"}
}, {"$group": {"_id": {"subject": "$subject","schoolAreaId": "$schoolAreaId","grade": "$grade","classId": "$classId","isRefund": "$isRefund","teacherId": "$teacherId"},"subject": {"$first": "$subject"},"schoolAreaId": {"$first": "$schoolAreaId"},"grade": {"$first": "$grade"},"classId": {"$first": "$classId"},"isRefund": {"$first": "$isRefund"},"teacherId": {"$first": "$teacherId"},"refundCount": {"$sum": 1}}
}, {"$project": {"_id": 0,"subject": 1,"schoolAreaId": 1,"grade": 1,"classId": 1,"refundCount": 1,"teacherId": 1,"isRefund": {"$ifNull": ["$isRefund", 0]}}
}])

MongoTemplate的API

Aggregation aggregation = Aggregation.newAggregation(Aggregation.match(new Criteria("courseType").is("常规班课").and("teacherRefundReasonCheck").is(true).and("teacherId").in(Sets.newHashSet(7544)).and("createTime").is("2023-09-08")),Aggregation.group("subject","schoolAreaId","grade","classId","isRefund","teacherId").first("subject").as("subject").first("schoolAreaId").as("schoolAreaId").first("grade").as("grade").first("classId").as("classId").first("isRefund").as("isRefund").first("teacherId").as("teacherId").count().as("refundCount"),Aggregation.project("subject","schoolAreaId","grade","classId","refundCount","teacherId","isRefund"));Iterator<RefundResult> iterator = mongoTemplate.aggregate(aggregation, "202303_refund",RefundResult.class).iterator();
http://www.lryc.cn/news/160327.html

相关文章:

  • WireShark抓包工具的安装
  • 审计智能合约的成本是多少?如何审计智能合约?
  • 9.7 校招 内推 面经
  • 【网络编程】IO多路复用
  • MySQL与postgreSQL数据库的区别
  • 单片机电子元器件-按键
  • Nacos docker实现nacos高可用集群项目
  • 基于Dubbo实现服务的远程调用
  • Redis事务的理解
  • PostgreSQL安装异常,服务无法启动导致创建服务器超时
  • 汽车电子系统网络安全解决方案
  • 切片机制和MR工作机制
  • 【postgresql 基础入门】基础架构和命名空间层次,查看数据库对象再也不迷路
  • 是的,决定放弃算法去机器学习了
  • Python 03(循环语句)
  • 安科瑞铁塔基站能耗监控解决方案
  • 操作系统-线程复用
  • 通达信自定义副图行业指标K线指标 HYZS_QD
  • MDK-Keil AC6 Compiler屏蔽特定警告
  • 计算机网络的故事——了解Web及网络基础
  • [系统安全] 五十三.DataCon竞赛 (2)2022年DataCon涉网分析之恶意样本IOC自动化提取详解
  • 自动驾驶——估计预瞄轨迹YawRate
  • PMP证书考下来要多少费用?
  • C动态分配
  • C语言——程序环境和预处理(再也不用担心会忘记预处理的知识)
  • Docker部署EMQX
  • Spring Cloud(Finchley版本)系列教程(二) 客户端负载均衡Ribbon
  • 好玩的js特效
  • java实现带有html格式和附件的符合RFC822规范的eml格式的信件原文组装
  • 如何使用PyTorch训练LLM