团队,春季数据综合查询
我是新的Spring数据MongoDB。我正在尝试学习聚合查询的Spring数据代码。但大多数教程只显示简单的例子。您可以请帮助我为给定的复杂聚合示例构建弹簧数据代码。
SCHEMA:
{
"s" : "CB",
"c" : "REQ_RCV",
"e" : "cta_sms_click",
"st" : "i",
"b" : "UB",
"a" : "account-1",
"u" : "b1_h1_d1_m1_user_2",
"c#" : "b1_h1_d1_m1_cr-2",
"@" : ISODate("2016-10-01T06:03:00.000Z"),
"@h" : "16100106",
"@d" : "161001",
"@m" : "1610"
}
QUERY:
db.COLLECTION_NAME.aggregate([
{$match:{"st":"i","@":{$gte : new ISODate("2015-10-01T06:00:00Z"), $lte : new ISODate("2017-10-02T10:00:00Z")}, "c":"REQ_RCV"}},
{$group:{_id:{"b":"$b", "HOURLY":"[email protected]"}, count:{$sum:1}}},
{$project : {_id:0, "BUCKET":"$_id.b", "TIME":"$_id.HOURLY", count:1}},
{$sort:{"BUCKET":1, "TIME":1}}
]);
复杂性:
- $匹配具有muliple指标分析
- $项目已进入下_id组的内场
- ,因为它变化的结果不能被映射到一个类基于$项目字段的变化。最终我会 喜欢把它映射到java.util.HashMap,这样我就可以把任何字段 置于$ project中。那可能吗?
从Veeram初步的答案以供参考:
Aggregation agg = newAggregation(match(where("st").is("i").and("@").gte(start_date).lte(end_date).and("c").is("REQ_RCV")),
group(fields("b").and("HOURLY", "[email protected]")).count().as("count"),
project(fields("count").and("BUCKET","$_id.b").and("TIME", "$_id.HOURLY")),
sort(ASC, "BUCKET", "TIME"));
@chridam你能帮我吗? –