And*_*dna 8 mongodb spring-data aggregation-framework
我开始MongoDB在我的应用程序中使用数据库,为了数据访问,我选择了Spring Data for MongoDB.
我浏览了API参考和文档,我可以看到有map-reduce集成但是聚合框架呢?我可以看到它支持group by操作,这表明它支持$group运营商判断:http://docs.mongodb.org/manual/reference/sql-aggregation-comparison/,但是其他运营商呢,那是现在不支持?
我问的是这个问题,因为我想知道与MongoDBSping Data 有什么样的集成,所以我知道会发生什么,可以这么说.
Spring Data 1.3.0.RC1可用,它确实支持聚合框架.
例如:shell聚合命令:
db.eft_transactions.aggregate(
{$match:
{
service:"EFT",
source:"MARKUP",
}
},
{$group:
{
_id:"$card_acceptor_id",
tran_count:{$sum:1},
amount_sum:{$sum:"$amount"}
}
}
)
Run Code Online (Sandbox Code Playgroud)
从java运行如下:
AggregationOperation match = Aggregation.match(Criteria.where("service").is("EFT").and("source").is("MARKUP"));
AggregationOperation group = Aggregation.group("card_acceptor").and("amount_sum").sum("amount").and("tran_count").count();
Aggregation aggregation = newAggregation(match, group);
AggregationResults<StoreSummary> result = this.mongoTemplate.aggregate(aggregation, "eft_transactions", StoreSummary.class);
Run Code Online (Sandbox Code Playgroud)
文档在这里
注意:我们最近不得不切换到使用版本1.3.0的BUILD-SNAPSHOT版本.此更改需要更改上述两行已更改为:
AggregationOperation group = Aggregation.group("card_acceptor").sum("amount").as("amount_sum").count().as("tran_count");
Aggregation aggregation = Aggregation.newAggregation(match, group);
Run Code Online (Sandbox Code Playgroud)
Spring Data MongoOperations.group()方法映射到db.collection.group()MongoDB命令而不是$group聚合函数.目前,Spring Data MongoDB不支持聚合框架.正如您所提到的,Map reduce虽然受到支持
| 归档时间: |
|
| 查看次数: |
14128 次 |
| 最近记录: |