SpringデータMongoDB – 集約グループ化の例
このチュートリアルでは、Spring Data MongoDB集約フレームワークでデータのグループ化を行う方法を説明します。
1.テストデータ
domain.json
{ "__id" : 1, "domainName" : "test1.com", "hosting" : "hostgator.com" } { "__id" : 2, "domainName" : "test2.com", "hosting" : "aws.amazon.com"} { "__id" : 3, "domainName" : "test3.com", "hosting" : "aws.amazon.com" } { "__id" : 4, "domainName" : "test4.com", "hosting" : "hostgator.com" } { "__id" : 5, "domainName" : "test5.com", "hosting" : "aws.amazon.com" } { "__id" : 6, "domainName" : "test6.com", "hosting" : "cloud.google.com" } { "__id" : 7, "domainName" : "test7.com", "hosting" : "aws.amazon.com" } { "__id" : 8, "domainName" : "test8.com", "hosting" : "hostgator.com" } { "__id" : 9, "domainName" : "test9.com", "hosting" : "cloud.google.com" } { "__id" : 10, "domainName" : "test10.com", "hosting" : "godaddy.com" } ... {"__id":100、 "domainName": "test10.com"、 "hosting": "godaddy.com"}
2. MongoDB集約の例
MongoDB集約の例は、ホストの総数を合計する:
db.domain.aggregate( { $一致:{__id:{$ lt:10}} }、 { $ group:{__id: "$ hosting"、合計:{$ sum:1}} }、 { $ソート:{合計:-1} } );
出力
{"__id": "aws.amazon.com"、 "合計":4} {"__id": "hostgator.com"、 "total":3} {"__id": "cloud.google.com"、 "合計":2} {"__id": "godaddy.com"、 "合計":1}
2. Springデータ+ MongoDB集約の例
これは、Spring Data MongoDBの同等の例です。
DomainDaoImpl.java
パッケージcom.mkyong.core.domain.dao; //imports as static import static org.springframework.data.mongodb.core.aggregation.Aggregation.group; import static org.springframework.data.mongodb.core.aggregation.Aggregation.match; import static org.springframework.data.mongodb.core.aggregation.Aggregation.newAggregation; import static org.springframework.data.mongodb.core.aggregation.Aggregation.project; import static org.springframework.data.mongodb.core.aggregation.Aggregation.sort; インポートorg.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate;インポートorg.springframework.data.mongodb.core.aggregation.Aggregation; org.springframework.data.mongodb.core.aggregation.AggregationResultsをインポートします。インポートorg.springframework.data.mongodb.core.query.Criteria;インポートorg.springframework.data.mongodb.core.query.Query;インポートorg.springframework.data.mongodb.core.query.Update;インポートorg.springframework.stereotype.Repository; import com.mkyong.core.domain.model.Domain; import com.mkyong.core.hosting.model.HostingCount; import java.util.List; @RepositoryパブリッククラスDomainDaoImplはDomainDao { @Autowired MongoTemplate mongoTemplate; ( "total")、プロジェクト( "total")、グループ( "hosting")、グループ( " ( "total")and( "hosting")。previousOperation()、sort(Sort.Direction.DESC、 "total")); //Convert the aggregation result into a List AggregationResults<HostingCount> groupResults = mongoTemplate.aggregate(agg, Domain.class, HostingCount.class); List<HostingCount> result = groupResults.getMappedResults(); return result; }
HostingCount.java
パッケージcom.mkyong.core.hosting.model; パブリッククラスHostingCount { プライベートストリングホスティング; プライベートロングトータル。 //... }
。
MongoDB – 集約
コンセプト
。リンク://mongodb/mongodb-aggregate-and-group-example/[MongoDB –
集計およびグループの例]。
Spring.io
– 集約フレームワークのサポート
aggregation
mongodb
spring-data