java mongodb groupby分组查询
<pre class="prettyprint prettyprinted"><span class="pln">mongodb,聚合查询<br>命令格式:<br>db<span class="pun">.<span class="pln">COLLECTION_NAME<span class="pun">.<span class="pln">aggregate<span class="pun">(<span class="pln">AGGREGATE_OPERATION<span class="pun">)<br><br>示例:db.</span></span></span></span></span></span></span></span><span class="pln">COLLECTION_NAME</span><span class="pln"><span class="pun"><span class="pln"><span class="pun"><span class="pln"><span class="pun"><span class="pln"><span class="pun">.aggregate(</span></span></span></span></span></span></span></span></pre><pre class="prettyprint prettyprinted"><em><span class="pln"><span class="pun"><span class="pln"><span class="pun"><span class="pln"><span class="pun"><span class="pln"><span class="pun"> [<br> { "$match" : { "status" : { "$ne" : 4 } } }<br> { "$group" : { "_id" : { "projectTreeName" : "$projectTreeName", "batchName" : "$batchName" } } }, <br> { "$sort" : { "_id.projectTreeName" : -1 } },<br> {$skip:2},<br> {$limit:3}<br> ])<br>解读:<br> mongodb的聚合查询有个管道的概念,先执行完上一个管道,执行结果流入下一个管道。<br> 上面这个例子就是:先执行 $match 再进入 $group 进行分组,然后对分组结果进行$sort排序,最后对查询结果进行分页设置。<br>java<br> 我使用的是springboot 需要添加mongodb的依赖jar包<br></span></span></span></span></span></span></span></span></em></pre>
<pre><dependency><br> <groupId>org.springframework.boot</groupId><br> <artifactId>spring-boot-starter-data-mongodb</artifactId><br></dependency><br><br>application.properties的配置文件</pre>
<pre>spring.data.mongodb.uri=mongodb://username:password@localhost:27017/database<br>配置完成后,可以继承MongoRepository进行基本增删改查操作,这次主要讨论分组查询。<br>分组查询使用mongotemplate 直接使用@Autowired进行自动装配就行</pre>
<pre class="prettyprint prettyprinted"><em><span class="pln"><span class="pun"><span class="pln"><span class="pun"><span class="pln"><span class="pun"><span class="pln"><span class="pun"> </span></span></span></span></span></span></span></span></em></pre>
<pre>import static org.springframework.data.mongodb.core.aggregation.Aggregation.*;<br>@Autowired<br>private MongoTemplate mongoTemplate;</pre>
<pre><em id="__mceDel">//方法中调用的newAggregation还有match,group,sort等管道函数都是org.springframework.data.mongodb.core.aggregation.Aggregation提供的静态方法</em></pre>
<pre>Aggregation agg = newAggregation(</pre>
<pre class="prettyprint prettyprinted"> match(new Criteria("status").ne(4)),<br> group("batchName" ,"projectTreeName"),<br> sort(new Sort(Sort.Direction.DESC,"projectTreeName")),<br> skip(0L),<br><em id="__mceDel"> limit(10)<br></em><em id="__mceDel"><em id="__mceDel"> );</em></em></pre>
<pre><em><em>AggregationResults<Damweb_ClusterJob_jobs> aggregationResults = mongoTemplate.aggregate(agg,"</em></em><em id="__mceDel"><span class="pln">COLLECTION_NAME</span></em><em id="__mceDel"><em id="__mceDel"><em id="__mceDel">", Damweb_ClusterJob_jobs.class);</em></em></em></pre>
<pre class="prettyprint prettyprinted"><em id="__mceDel"><span class="pln"><span class="pun"><span class="pln"><span class="pun"><span class="pln"><span class="pun"><span class="pln"><span class="pun"> </span></span></span></span></span></span></span></span></em></pre><br><br>
来源:https://www.cnblogs.com/BigWrite/p/11127404.html
頁:
[1]