java mongodb groupby分组查询

mongodb,聚合查询
命令格式:
db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

示例:db.
COLLECTION_NAME.aggregate(
  [
    { "$match" : { "status" : { "$ne" : 4 } } }
    { "$group" : { "_id" : { "projectTreeName" : "$projectTreeName", "batchName" : "$batchName" } } },
    { "$sort" : { "_id.projectTreeName" : -1 } },
    {$skip:2},
    {$limit:3}
  ])
解读:
  mongodb的聚合查询有个管道的概念,先执行完上一个管道,执行结果流入下一个管道。
  上面这个例子就是:先执行 $match 再进入 $group 进行分组,然后对分组结果进行$sort排序,最后对查询结果进行分页设置。
java
  我使用的是springboot 需要添加mongodb的依赖jar包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

application.properties的配置文件
spring.data.mongodb.uri=mongodb://username:password@localhost:27017/database
配置完成后,可以继承MongoRepository进行基本增删改查操作,这次主要讨论分组查询。
分组查询使用mongotemplate 直接使用@Autowired进行自动装配就行
 
import static org.springframework.data.mongodb.core.aggregation.Aggregation.*;
@Autowired
private MongoTemplate mongoTemplate;
//方法中调用的newAggregation还有match,group,sort等管道函数都是org.springframework.data.mongodb.core.aggregation.Aggregation提供的静态方法
Aggregation agg = newAggregation(
    match(new Criteria("status").ne(4)),
    group("batchName" ,"projectTreeName"),
    sort(new Sort(Sort.Direction.DESC,"projectTreeName")),
    skip(0L),
    limit(10)
  );
AggregationResults<Damweb_ClusterJob_jobs> aggregationResults = mongoTemplate.aggregate(agg,"COLLECTION_NAME", Damweb_ClusterJob_jobs.class);
 

转载于:https://www.cnblogs.com/BigWrite/p/11127404.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值