團隊,春季數據綜合查詢
我是新的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你能幫我嗎? –