zoukankan      html  css  js  c++  java
  • 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);
     
  • 相关阅读:
    MySQL备份与恢复-innobackupex
    MySQL备份与恢复-mysqldump备份与恢复
    font-size对展示的影响
    IE8及以下的数组处理与其它浏览器的不同
    正则表达式处理的基本步骤
    str += "a" + "b" & str = str + "a" + "b"的性能比较
    为非ajax请求绑定回调函数的方法
    ajax操作的链式写法
    各种控制元素显示和隐藏的方法优劣
    跟鸟哥学到的一招
  • 原文地址:https://www.cnblogs.com/BigWrite/p/11127404.html
Copyright © 2011-2022 走看看