MongoDB 去重 分组

最近在做客服聊天系统遇到的一些小问题,记录一下。

java 项目,使用的是 MongoTemplate

1.去重

List<User> memberIds =mongoTemplate.findDistinct(query, "memberId", MSG_PREFIX, User.class);

query 查询条件

memberId 去重字段

MSG_PREFIX 查询的集合

User 转换Java类型

2.分组

使用mongoDB的聚合操作 Aggregation,对 memberId 进行分组然后取 msgId 最大的一条数据

Criteria criteriaMsg = new Criteria();criteriaMsg.and("memberId").in(memberIds);AggregationResults<ModelMap> aggregate = mongoTemplate.aggregate(Aggregation.newAggregation(Aggregation.match(criteriaMsg),//按条件过滤Aggregation.sort(Sort.by(Sort.Direction.DESC,"msgId")),//排序Aggregation.group("memberId").first("msgId").as("msgId"),//按会员id分组Aggregation.limit(10)//分页//将符合条件的msgId放入列表), VENDOR_CONTACT_PREFIX, ModelMap.class);List<ModelMap> list = aggregate.getMappedResults();List<Long> msgIds = list.stream().map(map -> (Long) map.get("msgId")).collect(Collectors.toList());

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/14199.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

官宣!正式成为淡人!向数据备份焦虑Say NO!

连轴转了十几天&#xff0c;想着终于要迎接美好的双休了&#xff0c;焦躁的心都变淡了。 但有时候压死骆驼的不是最后一根稻草&#xff1b; 当我终于剪好视频&#xff0c;满心欢喜导出时&#xff0c;却收到了一个令人沮丧的提示&#xff1a; “存储空间不足&#xff0c;请清…

本地连不上远程阿里云MySQL数据库,密码对就是连不上

三步解决 设置安全组&#xff1a; 设置防火墙&#xff1a; iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT设置root用户连接host&#xff1a; 终端登录mysql&#xff0c;然后&#xff1a; use mysql; select user,host from user where use…

VUE3好看的酒网站模板源码

文章目录 1.设计来源1.1 首页界面1.2 十大名酒界面1.3 名酒新闻界面1.4 联系我们界面1.5 在线留言界面 2.效果和结构2.1 动态效果2.2 代码结构 3.VUE框架系列源码4.源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/detai…

【文末附gpt升级方案】欧盟率先立法:全球首个人工智能法律框架“AI法案”的深远影响与未来展望

欧盟率先立法&#xff1a;全球首个人工智能法律框架“AI法案”的深远影响与未来展望 摘要&#xff1a;随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;其在经济、社会、文化等多个领域的应用日益广泛&#xff0c;但同时也带来了数据安全、隐私保护、伦理道…

vue项目中如何使用iconfont

导读&#xff1a;vue项目中引入iconfont的方式 iconfont 的三种使用方法 unicode 不常用Font class 像字体一样使用&#xff0c;默认黑色图标&#xff0c;无法修改颜色Symbol 支持多色图标&#xff0c;更灵活&#xff0c;推荐 一、unicode 略 二、Font class 方式一&#…

oneapi离线在docker部署时提示failed to get gpt-3.5-turbo token encoder

one-api部署在docker中&#xff0c;一直都正常。项目上线正式服务器后&#xff0c;发现one-api容器无法启动&#xff0c;日志发现其无限重启&#xff0c;错误原因是failed to get gpt-3.5-turbo token encoder&#xff0c;看来它肯定是需要联网下载数据&#xff0c;我的正式服务…

网页版收银系统比安装板收银系统的四大优势

在当今竞争激烈的零售市场中&#xff0c;高效的收银系统对于连锁实体店的管理至关重要。随着科技的不断发展&#xff0c;网页版收银系统成为越来越多零售企业的首选。网页版收银系统以其灵活性、可定制性和便利性&#xff0c;成为现代零售业的利器。本文将探讨网页版收银系统相…

BeanDefinition作用

BeanDefinition接口 BeanDefinition 描述一个 Bean 实例&#xff0c;这个实例有哪些属性值、构造函数以及一些其他信息&#xff0c;就是描述Bean实例的信息。 BeanDefinition是一个接口&#xff0c;允许BeanFactoryPostProcessor 内省和修改属性值和其他 Bean 元数据。 点击了…

【加密与解密(第四版)】第十五章笔记

第十五章 专用加密软件 15.1 认识壳 15.2 压缩壳 UPX、ASPack、PECompact 15.3 加密壳 ASProtect(压缩、加密、反跟踪代码、CRC校验、花指令)、Armadillo(穿山甲)、EXECryptor、Themida 15.4 虚拟机保护软件 虚拟机引擎&#xff08;编译器解释器虚拟CPU环境指令系统&#xff…

小型发电机不发电原因和解决方法

小型发电机不发电可能由多种原因造成&#xff0c;以下是一些常见原因及其解决方法&#xff1a; 1.电池电量不足&#xff1a;小型发电机通常需要电池来启动。如果电池电量不足&#xff0c;可能导致发电机无法启动。此时&#xff0c;您可以使用充电设备对电池进行充电&#xff0…

【运维项目经历|022】tomcat性能调优与集群部署项目

目录 项目名称 项目背景 项目目标 项目成果 我的角色与职责 我主要完成的工作内容 本次项目涉及的技术 本次项目遇到的问题与解决方法 本次项目中可能被面试官问到的问题 问题1&#xff1a;本次项目周期多长时间&#xff1f; 问题2&#xff1a;服务器部署架构方式及数…

Color预设颜色测试

"AliceBlue", "获取 ARGB 值为 的系统 #FFF0F8FF定义颜色。", "AntiqueWhite", "获取 ARGB 值为 的系统 #FFFAEBD7定义颜色。", "Aqua", "获取 ARGB 值为 的系统 #FF00FFFF定义颜色。", "Aquamarine"…

深度学习TensorFlow和Keras建立CNN模型口罩检测

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 随着新型冠状病毒&#xff08;COVID-19&#xff09;的爆发&#xff0c;口罩成为了公众防护的重要工具…

智能的PHP开发工具PhpStorm v2024.1全新发布——支持PHPUnit 11.0

PhpStorm是一个轻量级且便捷的PHP IDE&#xff0c;其旨在提高用户效率&#xff0c;可深刻理解用户的编码&#xff0c;提供智能代码补全&#xff0c;快速导航以及即时错误检查。可随时帮助用户对其编码进行调整&#xff0c;运行单元测试或者提供可视化debug功能。 立即获取PhpS…

Flutter 中的 InputDecorator 小部件:全面指南

Flutter 中的 InputDecorator 小部件&#xff1a;全面指南 在Flutter中&#xff0c;InputDecorator是一个用于装饰输入字段的组件&#xff0c;它为TextField和TextFormField提供了一个统一的外观和布局。InputDecorator可以让您自定义输入框的标签、填充、边框、图标、光标、错…

flask中的路由是什么意思

在Flask框架中&#xff0c;路由&#xff08;Routing&#xff09;是指将Web请求映射到处理这些请求的Python函数的过程。每个路由由一个URL规则和一个与之关联的视图函数组成。当用户访问一个特定的URL时&#xff0c;Flask会根据这个URL找到对应的视图函数&#xff0c;并执行该函…

【AD21】PCB板尺寸与层名称标注

PCB绘制完成后&#xff0c;需要给上级或生产制造商发送输出文件&#xff0c;输出文件中包含板尺寸标识和层标识可以方便工作的交接。 1. 板尺寸标识 首先板尺寸标识所在的层要在与板框不同的机械层&#xff0c;这里我选择机械5层。 点击放置->尺寸->线性尺寸 这里板尺…

开源绘图工具Rnote使用体验分享

软件介绍 Rnote,这款致力于提供矢量绘图、手写笔记以及文档注释功能的免费开源软件,逐渐成为了学生、教师以及绘图板用户的新宠。其独特之处在于,它不仅支持PDF和图片的导入导出,还拥有无限画布和适应各种屏幕大小的界面设计,这些功能使得Rnote在众多同类软件中脱颖而出。…

Spring Boot集成Kafka:最佳实践与详细指南

在构建分布式和微服务架构时&#xff0c;消息队列如Apache Kafka已成为实现高效通信和数据处理的关键组件。Spring Boot作为Java领域的流行框架&#xff0c;提供了与Kafka的无缝集成。本文将详细介绍如何在Spring Boot项目中优雅地集成Kafka&#xff0c;并通过最佳实践和代码示…

Boxy SVG for Mac:打造精致矢量图形的得力助手

在矢量图形设计领域&#xff0c;Boxy SVG for Mac以其出色的性能和丰富的功能&#xff0c;成为了设计师们的得力助手。 Boxy SVG for Mac(矢量图编辑器) v4.32.0免激活版下载 Boxy SVG具备强大的编辑能力&#xff0c;支持节点编辑、路径绘制、颜色填充等多种操作&#xff0c;让…