mongodb 去重查询 Java,MONGODB03 - 分组计数/分组去重计数(基于 spring-data-mongodb)...

前因

项目中有查询MongoDB单表统计相关功能,涉及到MongoDB数据聚合相关操做,其中在多字段分组去重计数相关操做API上资料较少,spring-data-mongodb相关的API介绍也不够直给java

需求

查询XX的ID下全部任务的数量mysql

查询XX的ID下每一个用户对应的任务数spring

实现

Mysql

这样的需求在mysql中很是只是很是简单的两句查询sql

select count(1) as count , medalId from XXTask group by medalId;

select count(distinct userId) as count,medalId from XXTask group by medalId;

MongoDB

第一个需求比较简单,采用Aggregation进行数据聚合便可mongodb

Criteria criteria = Criteria.where("medalId").in({"id1","id2"});

if (start != null && end != null) {

criteria.and("submitTime").gte(start).lt(end);

}

/*认证次数数据聚合*/

Aggregation aggregation = Aggregation.newAggregation(

Aggregation.match(criteria),

Aggregation.group("medalId").count().as("count").last("medalId").as("medalId")

);

List verifyCounts = mongoTemplate.aggregate(aggregation, MedalTask.class, MedalTaskCount.class).getMappedResults();

第二个需求也比较简单,也是采用Aggregation进行数据聚合,不过须要稍微转个弯app

Criteria criteria = Criteria.where("medalId").in({"id1","id2"});

if (start != null && end != null) {

criteria.and("submitTime").gte(start).lt(end);

}

/*认证次数数据聚合*/

Aggregation aggregation = Aggregation.newAggregation(

Aggregation.match(criteria),

Aggregation.group("medalId", "userId"),

Aggregation.group("medalId").last("medalId").as("medalId").count().as("count")

);

List verifyCounts = mongoTemplate.aggregate(aggregation, MedalTask.class, MedalTaskCount.class).getMappedResults();

其中第一次按照双字段分组,第一层group取得medalId和userId的分组信息,第二层group再以medalId为分组对象,则能count出想要的答案code

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于 MongoDB 启动时出现的错误,可以尝试以下解决方案: 1. 检查配置文件路径:确保您提供的配置文件路径正确无误,并且配置文件存在于指定的位置。在您的命令中,确认 `~/softconfig/mongodb-macos-x86_64-6.0.8/mongodb.conf` 是否是正确的配置文件路径。 2. 检查配置文件内容:打开配置文件 `mongodb.conf`,确保其中的配置选项正确设置。特别注意以下几个常见的配置项: - `bindIp`:MongoDB 绑定的 IP 地址,可以尝试将其设置为 `0.0.0.0`,以允许所有 IP 地址连接到 MongoDB。 - `port`:MongoDB 监听的端口号,默认是 27017,确保该端口没有被其他进程占用。 - `dbpath`:MongoDB 数据库文件存储路径,确保该路径存在并且有正确的读写权限。 3. 检查日志文件:运行命令时,观察控制台输出的错误信息。如果有提供日志文件路径,可以查看相关日志文件,以获取更详细的错误信息。通常,MongoDB 的日志文件位于 `/var/log/mongodb/` 目录下。 4. 检查数据库文件权限:确保 MongoDB 数据库文件所在的目录具有正确的读写权限。可以尝试使用管理员权限运行启动命令。 5. 检查 MongoDB 版本和操作系统兼容性:确保您所使用的 MongoDB 版本与您的操作系统兼容。如果您的操作系统是最新版本,但 MongoDB 版本较旧,可能需要升级 MongoDB。 如果尝试了以上解决方案后仍然无法解决问题,建议您查阅 MongoDB 的官方文档、社区论坛或向 MongoDB 开发人员社区求助,以获得更具体的问题解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值