婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > mongodb中按天進行聚合查詢的實例教程

mongodb中按天進行聚合查詢的實例教程

熱門標簽:呼和浩特電銷外呼系統加盟 蘋果汽車租賃店地圖標注 電銷機器人是什么軟件 怎么投訴地圖標注 濟南電銷機器人加盟公司 云南外呼系統 老虎洗衣店地圖標注 杭州人工電銷機器人價格 廣州長安公司怎樣申請400電話

前言

最近在寫項目的時候遇到一個問題,使用mongodb記錄了用例的執行結果,但是在時間的記錄上使用的是date格式,現在有一個需求,以天為單位,統計一下每天成功的用例和失敗的用例,說到統計,肯定是要用到聚合查詢,但是如果以date格式的時間為group依據,那么等同于沒有分組,因為在記錄用例的時間幾乎不可能同時,今天查閱了一下相關文檔,可以使用mongodb的$dateToString命令來完成這個需求

問題來源

假如我們以如下的數據

/* 1 */
{
 "_id" : ObjectId("5d24c09651a456efbc231669"),
 "time" : ISODate("2019-07-08T10:12:35.125Z"),
 "result" : "Pass"
}

/* 2 */
{
 "_id" : ObjectId("5d24c09e51a456efbc23166a"),
 "time" : ISODate("2019-07-08T10:12:36.125Z"),
 "result" : "Pass"
}

...
...

/* 10 */
{
 "_id" : ObjectId("5d24c0d851a456efbc231672"),
 "time" : ISODate("2019-07-06T10:10:52.125Z"),
 "result" : "Pass"
}

/* 11 */
{
 "_id" : ObjectId("5d24c0e751a456efbc231673"),
 "time" : ISODate("2019-07-06T10:10:52.125Z"),
 "result" : "Fail"
}

我的預期結果是

{'_id': '2019-07-06', 'Pass': 1}
{'_id': '2019-07-06', 'Fail': 2}
{'_id': '2019-07-07', 'Pass': 2}
{'_id': '2019-07-07', 'Fail': 1}
{'_id': '2019-07-08', 'Pass': 2}
{'_id': '2019-07-08', 'Fail': 3}

如果按照以前的聚合方式,通過$time來分組,由于每個時間都不相同,所以這樣的聚合就相當于沒有聚合

#coding:utf-8

from pymongo import MongoClient

client = MongoClient(host=['%s:%s'%("127.0.0.1",27017)])
G_mongo = client['test']

pipeline = [
  {'$group': {'_id': '$time', 'count': {'$sum': 1}}},
 ]
for i in G_mongo['test'].aggregate(pipeline):
 print(i)

得到的結果

{'_id': datetime.datetime(2019, 7, 6, 10, 10, 32, 125000), 'count': 1}
{'_id': datetime.datetime(2019, 7, 7, 10, 10, 32, 125000), 'count': 1}
{'_id': datetime.datetime(2019, 7, 8, 10, 11, 22, 125000), 'count': 1}
{'_id': datetime.datetime(2019, 7, 6, 10, 10, 52, 125000), 'count': 1}
{'_id': datetime.datetime(2019, 7, 8, 10, 11, 32, 125000), 'count': 1}
{'_id': datetime.datetime(2019, 7, 8, 10, 12, 32, 125000), 'count': 1}
{'_id': datetime.datetime(2019, 7, 7, 10, 11, 22, 125000), 'count': 1}
{'_id': datetime.datetime(2019, 7, 8, 10, 12, 36, 125000), 'count': 1}
{'_id': datetime.datetime(2019, 7, 8, 10, 12, 35, 125000), 'count': 1}
{'_id': datetime.datetime(2019, 7, 7, 10, 10, 22, 125000), 'count': 1}

可以看到,由于$time上的時間,誰和誰都不一樣,所以如果以$time為分組對象的話每個統計都是1。

問題的解決

在分組的時候有一個$dateToString指令,可以將日期格式的值轉化為字符串,比如這里因為需求是要以天為單位,所以我將其轉為
%Y-%m-%d的字符串格式,具體的$grouop如下

{'$group': {'_id': {"$dateToString":{'format':'%Y-%m-%d','date':'$time'}}, 'count': {'$sum': 1}}}

$dateToString的說明文檔可以訪問https://docs.mongodb.com/manual/reference/operator/aggregation/dateToString/ 查看,簡單介紹一個

{ $dateToString: {
  date: dateExpression>,
  format: formatString>,
  timezone: tzExpression>,
  onNull: expression>
} }

它需要四個參數,只有date參數是必須的,指定數據來源,format是轉化的格式,timezone為時區,onNull是如果日期值不存在時返回的值。

#coding:utf-8

from pymongo import MongoClient

client = MongoClient(host=['%s:%s'%("127.0.0.1",27017)])
G_mongo = client['test']


pipeline = [
    # {'$group': {'_id': '$time', 'count': {'$sum': 1}}},
    {'$group': {'_id': {"$dateToString":{'format':'%Y-%m-%d','date':'$time'}}, 'count': {'$sum': 1}}}
  ]
for i in G_mongo['test'].aggregate(pipeline):
  print(i)

上面代碼執行的結果如下

{'_id': '2019-07-06', 'count': 2}
{'_id': '2019-07-07', 'count': 3}
{'_id': '2019-07-08', 'count': 5}

這個看起來還不錯,但是離我的目標還差一點,因為它還沒有按照用例執行結果進行分組,再以天進行倒序排列

#coding:utf-8

from pymongo import MongoClient

client = MongoClient(host=['%s:%s'%("127.0.0.1",27017)])
G_mongo = client['test']


pipeline = [
    # {'$group': {'_id': '$time', 'count': {'$sum': 1}}},
    {'$group': {'_id': {'date':{"$dateToString":{'format':'%Y-%m-%d','date':'$time'}},'result':'$result'}, 'count': {'$sum': 1}}},
    {'$sort':{"_id.date":-1}}
  ]
for i in G_mongo['test'].aggregate(pipeline):
  print(i)

得到的結果如下

{'_id': {'date': '2019-07-08', 'result': 'Fail'}, 'count': 3}
{'_id': {'date': '2019-07-08', 'result': 'Pass'}, 'count': 2}
{'_id': {'date': '2019-07-07', 'result': 'Pass'}, 'count': 2}
{'_id': {'date': '2019-07-07', 'result': 'Fail'}, 'count': 1}
{'_id': {'date': '2019-07-06', 'result': 'Fail'}, 'count': 1}
{'_id': {'date': '2019-07-06', 'result': 'Pass'}, 'count': 2}

查看文檔,除了使用$dateToString指令還可以使用$dayOfMonth指令

pipeline = [
    {'$group': {'_id': {'date':{"$dayOfMonth":{'date':'$time'}},'result':'$result'}, 'count': {'$sum': 1}}},
    {'$sort':{"_id.date":-1}},
  ]

但是這個指令只能適用于單一月份,如果兩個月就會有交集,如7月6號和6月6號的會聚合到一起
上面得到的結果是

{'_id': {'date': 8, 'result': 'Fail'}, 'count': 3}
{'_id': {'date': 8, 'result': 'Pass'}, 'count': 2}
{'_id': {'date': 7, 'result': 'Pass'}, 'count': 2}
{'_id': {'date': 7, 'result': 'Fail'}, 'count': 1}
{'_id': {'date': 6, 'result': 'Pass'}, 'count': 2}
{'_id': {'date': 6, 'result': 'Fail'}, 'count': 1}

所以需要根據需求靈活的使用各種指令。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • JAVA mongodb 聚合幾種查詢方式詳解
  • MongoDB教程之聚合(count、distinct和group)
  • Mongodb聚合函數count、distinct、group如何實現數據聚合操作
  • MongoDB聚合功能淺析
  • MongoDB入門教程之聚合和游標操作介紹
  • MongoDB聚合分組取第一條記錄的案例與實現方法
  • mongodb聚合_動力節點Java學院整理
  • mongoDB中聚合函數java處理示例詳解

標簽:興安盟 廈門 玉林 雞西 泰安 遼陽 自貢 無錫

巨人網絡通訊聲明:本文標題《mongodb中按天進行聚合查詢的實例教程》,本文關鍵詞  mongodb,中按天,進行,聚合,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《mongodb中按天進行聚合查詢的實例教程》相關的同類信息!
  • 本頁收集關于mongodb中按天進行聚合查詢的實例教程的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    午夜精品福利一区二区三区av| 亚洲综合在线观看视频| 日本不卡一区二区| 91精品国产一区二区三区蜜臀| 久久亚洲精品国产精品紫薇| 久久精品噜噜噜成人88aⅴ| 欧美一级欧美三级| 久久狠狠亚洲综合| 色诱亚洲精品久久久久久| 最新日韩在线视频| 欧美三级日韩三级| 国产精品乱码一区二区三区软件| 视频一区视频二区中文| 欧美一区二区三区四区高清| 亚洲日本在线天堂| 欧美婷婷六月丁香综合色| 日韩成人免费看| 精品第一国产综合精品aⅴ| 亚洲永久免费av| 日韩一级大片在线观看| 国产成人福利片| 日韩一区二区三区视频在线观看| 亚洲精品综合在线| 国产成人精品一区二区三区四区 | 91捆绑美女网站| 一区二区三区小说| 日韩三级免费观看| 成人午夜私人影院| 婷婷丁香久久五月婷婷| 久久美女高清视频| 欧美色图激情小说| 国产精品主播直播| 亚洲自拍另类综合| 欧美视频完全免费看| 亚洲欧洲日韩一区二区三区| 欧美日韩国产经典色站一区二区三区| 国产精品美女久久久久高潮| 国产成人精品一区二区三区四区| 久久综合久久久久88| 另类欧美日韩国产在线| 国产精品久久久久影院老司 | 秋霞国产午夜精品免费视频| 国产亚洲欧美激情| 欧美视频一区二区在线观看| 亚洲国产综合91精品麻豆| 2017欧美狠狠色| 欧美日韩一区二区三区免费看| 一区二区三区在线高清| 欧美亚洲综合一区| 成人激情开心网| 蜜桃视频一区二区三区在线观看| 欧美一区二区在线观看| 免费观看30秒视频久久| 精品在线观看视频| 一个色综合av| 国产精品不卡在线| 国产午夜精品一区二区| 成人av中文字幕| 久久69国产一区二区蜜臀| 亚洲午夜久久久久久久久电影院| 欧美午夜精品一区| 日本不卡一区二区| 亚洲精品高清在线| 亚洲国产精品成人久久综合一区| 91啪亚洲精品| 午夜精彩视频在线观看不卡| 亚洲手机成人高清视频| 久久精品视频免费观看| 欧美一级淫片007| 欧美日韩国产一区二区三区地区| 日韩国产一区二| 亚洲电影第三页| 一级日本不卡的影视| 欧美精品一区二区三区在线 | 亚洲精品欧美二区三区中文字幕| 欧美在线观看视频一区二区| kk眼镜猥琐国模调教系列一区二区| 亚洲三级久久久| 国产精品毛片久久久久久久| 精品国产网站在线观看| 欧美精品一区二区不卡| 精品播放一区二区| 久久综合一区二区| 久久久国产午夜精品| 欧美亚洲一区二区三区四区| 91视视频在线观看入口直接观看www | 91精品国产综合久久久久久久久久 | 国内成人精品2018免费看| 国产精品毛片久久久久久| 欧美怡红院视频| 欧美三级一区二区| av中文字幕一区| 99re热这里只有精品免费视频| 麻豆精品一二三| 美女视频一区二区| 亚洲国产日产av| 日韩精品亚洲专区| 亚洲视频中文字幕| 国产日韩在线不卡| 亚洲色图第一区| 天堂久久一区二区三区| 久久精品国产亚洲aⅴ| 国产美女精品在线| 亚洲国产激情av| 18成人在线观看| 亚洲一区av在线| 国产精品不卡一区| 亚洲一区二区综合| 美女一区二区久久| 国产成人av电影免费在线观看| 久久精品国产亚洲5555| av高清不卡在线| 欧美日本乱大交xxxxx| 色婷婷精品久久二区二区蜜臂av | 日韩精品一区二区三区蜜臀| 精品国产91久久久久久久妲己 | 午夜精品一区二区三区免费视频 | 亚洲国产aⅴ成人精品无吗| 毛片av一区二区| 色综合天天综合网天天看片| 欧美日韩久久不卡| 国产亲近乱来精品视频| 亚洲无线码一区二区三区| 精品在线一区二区| 欧美日韩一区二区三区四区 | 日本久久一区二区| 精品人伦一区二区色婷婷| 亚洲精品中文字幕乱码三区| 另类人妖一区二区av| 欧美午夜电影一区| 国产精品天美传媒| 免费av成人在线| 91麻豆免费观看| 国产亚洲欧美色| 青青草原综合久久大伊人精品| 日本不卡一区二区| 色香蕉成人二区免费| 亚洲精品一区二区三区福利| 久久久久国产精品免费免费搜索| 日本一区二区免费在线| 日韩激情一区二区| 久草在线在线精品观看| 欧美性xxxxxxxx| 国产精品全国免费观看高清| 尤物av一区二区| 丰满岳乱妇一区二区三区| 日韩一区二区三区视频| 亚洲一区二区黄色| 91免费版在线看| 国产精品久久久99| 国产成人免费在线视频| 欧美xxx久久| 另类综合日韩欧美亚洲| 日韩一区二区三区视频在线| 亚洲va欧美va天堂v国产综合| 日本美女一区二区三区视频| 欧美午夜在线观看| 亚洲综合在线免费观看| 欧美综合一区二区| 91在线国内视频| 国产精品国产三级国产| 成人一区二区视频| 中文字幕精品一区二区精品绿巨人| 尤物在线观看一区| 在线观看一区二区精品视频| 亚洲精品日韩综合观看成人91| 免费观看在线色综合| 成人av资源在线| 亚洲视频一区二区在线| 另类综合日韩欧美亚洲| 欧美一区二区三区电影| 裸体歌舞表演一区二区| 欧美xfplay| 国产二区国产一区在线观看| 欧洲一区二区三区免费视频| 亚洲人成小说网站色在线 | 2021国产精品久久精品| 免费日韩伦理电影| 亚洲精品一线二线三线无人区| 亚洲色图丝袜美腿| 99九九99九九九视频精品| 亚洲靠逼com| 91麻豆精品久久久久蜜臀| 136国产福利精品导航| 99精品国产视频| 亚洲一线二线三线视频| 国产在线精品免费av| 国产欧美日韩不卡| 色欧美88888久久久久久影院| 久久久久久久电影| 97se亚洲国产综合自在线不卡| 日韩精品一区二区三区视频| 亚洲地区一二三色| 欧美成人精品二区三区99精品| 一级精品视频在线观看宜春院 | 亚洲国产中文字幕| 日韩一区二区三区视频| 福利91精品一区二区三区| 亚洲图片欧美视频| 日本电影亚洲天堂一区|