mongo按照年度挥下、月份揍魂、日期桨醋、小時分組統(tǒng)計(一)

整整惡心了我兩天,一度差點放棄使用分組现斋。直接將數(shù)據(jù)按照分組的維度存儲就直接簡單查詢了喜最。直到我找到了 $project 和 $dateToString $year $dayOfMonth 這些指令。

下面列一下我了解到的這些指令:

名稱 含義
$year 返回該日期的年份部分
$month 返回該日期的月份部分(between 1 and 12.)
$dayOfMonth 返回該日期的日部分
$hour 返回該日期的小時部分
$minute 返回該日期的分鐘部分
$second 返回該日期的秒部分(以0到59之間的數(shù)字形式返回日期的第二部分步责,但可以是60來計算閏秒。)
$millisecond 返回該日期的毫秒部分(between 0 and 999.)
$dayOfYear 返回該日期是這一年的第幾天禀苦。(全年366天)
$dayOfMonth 返回該日期是這一個月的第幾天蔓肯。(1到31)
$dayOfWeek 返回的是這個周的星期幾。(1:星期日振乏,7:星期六)
$week 返回該日期是所在年的第幾個星期(between 0 and 53)
$dateToString 格式日期:{ $dateToString: { format: <formatString>, date: <dateExpression> } }
# $dateToString的 format格式化
%Y  Year (4 digits, zero padded)    0000-9999
%m  Month (2 digits, zero padded)   01-12
%d  Day of Month (2 digits, zero padded)    01-31
%H  Hour (2 digits, zero padded, 24-hour clock) 00-23
%M  Minute (2 digits, zero padded)  00-59
%S  Second (2 digits, zero padded)  00-60
%L  Millisecond (3 digits, zero padded) 000-999
%j  Day of year (3 digits, zero padded) 001-366
%w  Day of week (1-Sunday, 7-Saturday)  1-7
%U  Week of year (2 digits, zero padded)    00-53
%%  Percent Character as a Literal  %
# 執(zhí)行下面的語句可查看效果
# 注意:語句中的 requestTime字段必須是ISODate("") 方式存儲蔗包,如果是字符串或者long類型不能使用這些函數(shù)
# java.util.Date 類型字段,使用spring的mongoTemplate 存儲則保存的就是ISODate類型的
db.requestLog.aggregate(
   [
     {
       $project:
         {
           date: { $dateToString : {format: "%Y-%m-%d", date: "$requestTime"} },
           year: { $year: "$requestTime" },
           month: { $month: "$requestTime" },
           day: { $dayOfMonth: "$requestTime" },
           hour: { $hour: "$requestTime" },
           minutes: { $minute: "$requestTime" },
           seconds: { $second: "$requestTime" },
           milliseconds: { $millisecond: "$requestTime" },
           dayOfYear: { $dayOfYear: "$requestTime" },
           dayOfWeek: { $dayOfWeek: "$requestTime" },
           week: { $week: "$requestTime" }
         }
     },
    {
         $match:{ # 查詢條件 ( year=2020 and month=1)
                year:2020,  
                month:1
          }
    }
   ]
)

db.requestLog.aggregate(
   [
     {
       $project: {
          yearMonthDayUTC: { $dateToString: { format: "%Y-%m-%d", date: "$requestTime" } },
          timewithOffsetNY: { $dateToString: { format: "%H:%M:%S:%L%z", date: "$requestTime", timezone: "America/New_York"} },
          timewithOffset430: { $dateToString: { format: "%H:%M:%S:%L%z", date: "$requestTime", timezone: "+04:30" } },
          minutesOffsetNY: { $dateToString: { format: "%Z", date: "$requestTime", timezone: "America/New_York" } },
          minutesOffset430: { $dateToString: { format: "%Z", date: "$requestTime", timezone: "+04:30" } }
       }
     }
   ]
)

db.requestLog.aggregate([
    {$match:{"rime":{'$gte': ISODate("2019-03-11T00:00:00Z")  ,'$lt':ISODate("2019-03-12T00:00:00Z")}}},     
  {
   $group:{
    "_id":"$requestTime",
    "c":{$sum:1},
    "b":{$avg:"$requestTime"}
   }
  },{$sort:{"$requestTime":1}}
 ])


 db.requestLog.aggregate(
   [
     {
       $project:
         {
                 
           date: { $dateToString : {format: "%Y-%m-%d", date: "$requestTime"} },
                     year_month: { $dateToString : {format: "%Y-%m", date: "$requestTime"} },
           day: { $dayOfMonth: "$requestTime" },
           responseTime: "$responseTime"
         }
     },
         {
         $match:{
                year_month:'2020-01'
          }
         },
         {
            $group:{
            "_id":"$day",
            "b":{$avg:"$responseTime"},
            "c":{$sum:1}
         }
        },
        {$sort:{"_id":1}}
   ]
)

 db.requestLog.aggregate(
   [
     {
       $project:
         {
                     year_month: { $dateToString : {format: "%Y-%m-%d", date: "$requestTime"} }
         }
     },
        
         {
            $group:{
            "_id":"$year_month"
         }
        },
        {$sort:{"_id":1}}
   ]
)

 db.requestLog.aggregate(
   [
     {
       $project:
         {
                      year_month_day_hour: { $dateToString : {format: "%Y-%m-%d %H", date: "$requestTime"} },
                      reqUrl: "$reqUrl",
                         responseTime: "$responseTime"
         }
     },
        {
         $match:{
                year_month_day_hour:'2020-01-14 01'
          }
         },
         {
            $group:{
            "_id":"$reqUrl",
            "b":{$avg:"$responseTime"},
            "c":{$sum:1}
         }
        },
        {$sort:{"b":1}}
   ]
)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末慧邮,一起剝皮案震驚了整個濱河市调限,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌误澳,老刑警劉巖耻矮,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異忆谓,居然都是意外死亡裆装,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門倡缠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來哨免,“玉大人,你說我怎么就攤上這事昙沦∽镣伲” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵盾饮,是天一觀的道長采桃。 經(jīng)常有香客問我,道長丘损,這世上最難降的妖魔是什么芍碧? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮号俐,結(jié)果婚禮上泌豆,老公的妹妹穿的比我還像新娘。我一直安慰自己吏饿,他們只是感情好踪危,可當(dāng)我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布蔬浙。 她就那樣靜靜地躺著,像睡著了一般贞远。 火紅的嫁衣襯著肌膚如雪畴博。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天蓝仲,我揣著相機與錄音俱病,去河邊找鬼。 笑死袱结,一個胖子當(dāng)著我的面吹牛亮隙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播垢夹,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼溢吻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了果元?” 一聲冷哼從身側(cè)響起促王,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎而晒,沒想到半個月后蝇狼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡倡怎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年题翰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诈胜。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡豹障,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出焦匈,到底是詐尸還是另有隱情血公,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布缓熟,位于F島的核電站累魔,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏够滑。R本人自食惡果不足惜垦写,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望彰触。 院中可真熱鬧梯投,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至么鹤,卻和暖如春终娃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蒸甜。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工棠耕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人柠新。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓窍荧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親登颓。 傳聞我的和親對象是個殘疾皇子搅荞,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容