余震启 發表於 2019-7-3 16:42:00

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>&lt;dependency&gt;<br>    &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;<br>    &lt;artifactId&gt;spring-boot-starter-data-mongodb&lt;/artifactId&gt;<br>&lt;/dependency&gt;<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">&nbsp;</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&lt;Damweb_ClusterJob_jobs&gt; 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">&nbsp;</span></span></span></span></span></span></span></span></em></pre><br><br>
来源:https://www.cnblogs.com/BigWrite/p/11127404.html
頁: [1]
查看完整版本: java mongodb groupby分组查询