3
我想知道是否有人能幫我讓我的聚合功能正確。我試圖計算一段文本在特定日期每小時出現的次數。到目前爲止,我已經有了:聚合:每小時計數項目
db.daily_data.aggregate(
[
{ $project : { useragent: 1, datetime: 1, url: 1, hour: {$hour: new Date("$datetime")} } },
{ $match : { datetime: {$gte: 1361318400000, $lt: 1361404800000}, useragent: /.*LinkCheck by Siteimprove.*/i } },
{ $group : { _id : { useragent: "$useragent", hour: "$hour" }, queriesPerUseragent: {$sum: 1} } }
]
);
但我顯然得到它錯了,因爲時間永遠是0:
{
"result" : [
{
"_id" : {
"useragent" : "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.0) LinkCheck by Siteimprove.com",
"hour" : 0
},
"queriesPerUseragent" : 94215
}
],
"ok" : 1
}
這裏有一個記錄的下調例子太多:
{
"_id" : ObjectId("50fe63c70266a712e8663725"),
"useragent" : "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.0) LinkCheck by Siteimprove.com",
"datetime" : NumberLong("1358848954813"),
"url" : "http://www.somewhere.com"
}
我也嘗試使用new Date("$datetime").getHours()
而不是$hour
函數試圖獲得相同的結果,但沒有運氣。有人能指點我走向哪裏嗎?
謝謝!
$ hour函數假定您有ISODate()或Date()格式,並且在agg框架中沒有可用的日期格式轉換(儘管它有一個jira票據)。 – 2013-02-22 10:26:06