亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > 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精品一区| 超级乱淫伦动漫| 成人免费一级纶理片| 日韩一级黄色| 久久精品免视看国产明星| 国产亚洲精品成人a在线| 久久久久久久男人的天堂| 国产一区国产二区国产三区| 日韩av成人| 国产不卡精品一区二区三区| 日本伦理网站| 亚欧视频在线| 高清一级淫片a级中文字幕| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 青草国产在线观看| 成人高清视频免费观看| 午夜激情视频在线观看| 天堂网中文字幕| 成人a大片在线观看| 91麻豆精品国产自产在线观看一区| 欧美大片一区| 国产不卡高清在线观看视频 | 亚洲 激情| 成人影院一区二区三区| 精品视频在线看| 亚欧乱色一区二区三区| 日本特黄一级| 香蕉视频久久| 久久久久久久男人的天堂| 日韩av片免费播放| 国产成人精品影视| 国产麻豆精品视频| 国产视频网站在线观看| 欧美激情一区二区三区在线播放 | 成人影院一区二区三区| 一级毛片看真人在线视频| 黄视频网站免费| 免费的黄色小视频| 国产国语在线播放视频| 99久久精品国产高清一区二区| 日韩中文字幕在线观看视频| 欧美大片a一级毛片视频| 精品视频在线观看视频免费视频| 青青久久网| 日韩专区一区| 99久久精品国产免费| 精品国产三级a| 免费国产一级特黄aa大片在线| 成人高清免费| 九九精品在线| 日韩av东京社区男人的天堂| 精品在线视频播放| 韩国毛片基地| 91麻豆国产| 九九九国产| 日日夜夜婷婷| 日韩一级黄色| 尤物视频网站在线观看| 欧美激情在线精品video| 欧美a免费| 999久久狠狠免费精品| 免费的黄视频| 可以免费看毛片的网站| 国产a一级| 亚洲 国产精品 日韩| 99久久精品国产国产毛片| 国产不卡在线观看| 一级女人毛片人一女人| 国产a视频精品免费观看| 四虎影视久久久| 欧美电影免费看大全| 欧美a免费| 国产91素人搭讪系列天堂| 毛片高清| | 91麻豆国产福利精品| 日本在线www| 欧美激情一区二区三区视频 | 成人高清视频在线观看| 日韩一级黄色片| 韩国三级视频网站| 韩国三级香港三级日本三级| 国产一区二区精品| 国产成人精品影视| 日韩专区第一页| 国产一区二区精品久久91| 国产亚洲精品aaa大片| 天天做日日干| 毛片电影网| 国产极品白嫩美女在线观看看| 日本免费看视频| 午夜欧美成人久久久久久| 成人免费网站久久久| 久久国产影院| 日韩av东京社区男人的天堂| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 美女免费毛片| 午夜久久网| 日本免费区| 国产一区二区精品在线观看| 精品视频免费观看| 国产成人女人在线视频观看| 国产精品自拍在线| 九九久久99综合一区二区| 日韩在线观看免费完整版视频| 成人免费一级纶理片| 精品国产香蕉在线播出| 国产网站在线| 亚久久伊人精品青青草原2020| 色综合久久天天综合| 日本免费乱理伦片在线观看2018| 国产亚洲免费观看| 国产国语在线播放视频| 日韩免费在线观看视频| 成人影视在线观看| 日韩女人做爰大片| 久草免费在线色站| 毛片高清| 成人a大片高清在线观看| 天天做人人爱夜夜爽2020毛片| 一级毛片看真人在线视频| 成人在免费观看视频国产| 国产视频一区二区在线观看| 成人a级高清视频在线观看| 国产美女在线观看| 日韩男人天堂| 欧美另类videosbestsex高清| 国产视频一区二区在线播放| 九九免费高清在线观看视频| 成人高清护士在线播放| 国产视频一区二区在线播放| 国产视频在线免费观看| 欧美大片aaaa一级毛片| 成人免费一级毛片在线播放视频| 香蕉视频久久| 超级乱淫黄漫画免费| 欧美电影免费| 韩国毛片免费大片| 国产a一级| 黄色福利片| 亚欧成人乱码一区二区| 国产网站在线| 国产亚洲免费观看| 欧美大片aaaa一级毛片| 欧美18性精品| 成人a级高清视频在线观看| 国产成人精品影视| 可以免费看毛片的网站| 亚洲wwwwww| 天堂网中文在线| 久久国产影视免费精品| 日本特黄特色aaa大片免费| 国产成人精品综合在线| 一级毛片视频免费| 成人a大片在线观看| 可以免费看毛片的网站| 国产一级强片在线观看| 久久国产精品自线拍免费| 午夜在线亚洲| 美女免费毛片| 国产精品123| 韩国三级香港三级日本三级| 国产不卡精品一区二区三区| 香蕉视频亚洲一级| 九九精品影院| 免费国产在线观看不卡| 国产伦精品一区二区三区在线观看| 精品久久久久久中文| 成人a大片在线观看| 沈樵在线观看福利| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 精品视频一区二区三区免费| 可以免费看污视频的网站| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 日本在线www| 99热视热频这里只有精品| 999久久久免费精品国产牛牛| 欧美日本国产| 日韩专区第一页| 四虎影视库| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 午夜精品国产自在现线拍| 亚洲天堂在线播放| 麻豆污视频| 日韩在线观看免费| 国产不卡在线观看| 一级毛片视频免费|