亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MongoDB > 正文

MongoDB聚合分組取第一條記錄的案例與實現方法

2020-03-14 12:37:34
字體:
來源:轉載
供稿:網友

前言

今天開發同學向我們提了一個緊急的需求,從集合mt_resources_access_log中,根據字段refererDomain分組,取分組中最近一筆插入的數據,然后將這些符合條件的數據導入到集合mt_resources_access_log_new中。

接到這個需求,還是有些心虛的,原因有二,一是,業務需要,時間緊;二是,實現這個功能MongoDB聚合感覺有些復雜,聚合要走好多步。

數據記錄格式如下:

記錄1{ "_id" : ObjectId("5c1e23eaa66bf62c0c390afb"), "_class" : "C1", "resourceUrl" : "/static/js/p.js", "refererDomain" : "1234", "resourceType" : "static_resource", "ip" : "17.17.13.13", "createTime" : ISODate("2018-12-22T19:45:46.015+08:00"), "disabled" : 0}記錄2{ "_id" : ObjectId("5c1e23eaa66bf62c0c390afb"), "_class" : "C1", "resourceUrl" : "/static/js/p.js", "refererDomain" : "1234", "resourceType" : "Dome_resource", "ip" : "17.17.13.14", "createTime" : ISODate("2018-12-21T19:45:46.015+08:00"), "disabled" : 0}記錄3{ "_id" : ObjectId("5c1e23eaa66bf62c0c390afb"), "_class" : "C2", "resourceUrl" : "/static/js/p.js", "refererDomain" : "1235", "resourceType" : "static_resource", "ip" : "17.17.13.13", "createTime" : ISODate("2018-12-20T19:45:46.015+08:00"), "disabled" : 0}記錄4{ "_id" : ObjectId("5c1e23eaa66bf62c0c390afb"), "_class" : "C2", "resourceUrl" : "/static/js/p.js", "refererDomain" : "1235", "resourceType" : "Dome_resource", "ip" : "17.17.13.13", "createTime" : ISODate("2018-12-20T19:45:46.015+08:00"), "disabled" : 0}

以上是我們的4條記錄,類似的記錄文檔有1500W。

因為情況特殊,業務發版需要這些數據。催的比較急,而 通過 聚合 框架aggregate,短時間有沒有思路, 所以,當時就想著嘗試采用其他方案。

最后,問題處理方案如下。

Step 1 通過聚合框架 根據條件要求先分組,并將新生成的數據輸出到集合mt_resources_access_log20190122 中(共產生95筆數據);

實現代碼如下:

db.log_resources_access_collect.aggregate(      [            { $group: { _id: "$refererDomain" } },      { $out : "mt_resources_access_log20190122" }      ]      )

Step 2 通過2次 forEach操作,循環處理 mt_resources_access_log20190122和mt_resources_access_log的數據。

代碼解釋,處理的邏輯為,循環逐筆取出mt_resources_access_log20190122的數據(共95筆),每筆逐行加工處理,處理的邏輯主要是 根據自己的_id字段數據(此字段來自mt_resources_access_log聚合前的refererDomain字段), 去和 mt_resources_access_log的字段 refererDomain比對,查詢出符合此條件的數據,并且是按_id 倒序,僅取一筆,最后將Join刷選后的數據Insert到集合mt_resources_access_log_new。

新集合也是95筆數據。

大家不用擔心性能,查詢語句在1S內實現了結果查詢。

db.mt_resources_access_log20190122.find({}).forEach( function(x) {  db.mt_resources_access_log.find({ "refererDomain": x._id }).sort({ _id: -1 }).limit(1).forEach(   function(y) {    db.mt_resources_access_log_new.insert(y)   }  ) })

Step 3 查詢驗證新產生的集合mt_resources_access_log_new,結果符合業務要求。

刷選前集合mt_resources_access_log的數據量為1500多W。

刷選后產生新的集合mt_resources_access_log_new 數據量為95筆。

MongoDB,聚合分組

注意:根據時間排序的要求,因為部分文檔沒有createTime字段類型,且 createTime字段上沒有創建索引,所以未了符合按時間排序我們采用了sort({_id:1})的變通方法,因為_id 還有時間的意義。下面的內容為MongoDB對應_id 的相關知識。

最重要的是前4個字節包含著標準的Unix時間戳。后面3個字節是機器ID,緊接著是2個字節的進程ID。最后3個字節存儲的是進程本地計數器。計數器可以保證同一個進程和同一時刻內不會重復。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到MongoDB頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久成人精品| 性夜试看影院91社区| 亚洲欧美中文日韩在线v日本| 久久久久久国产| 国产精品久久久久久久久影视| 国产精品91视频| 精品久久久91| 久久99久久99精品免观看粉嫩| 成人免费视频a| 国产成人亚洲综合| 中文字幕亚洲综合久久筱田步美| 欧美理论在线观看| 日韩一中文字幕| 日韩精品高清在线观看| 国产999在线| 亚洲第一免费播放区| 国产精品第七十二页| 久久精品一区中文字幕| 欧美性视频网站| 亚洲免费视频观看| 欧美性猛交xxxx黑人猛交| 亚洲影视中文字幕| 久久香蕉频线观| 亚洲日韩欧美视频一区| 亚洲区免费影片| 亚洲人成在线电影| 欧美激情一级欧美精品| 97视频色精品| 亚洲精品国产精品久久清纯直播| 欧美日韩国产中文字幕| 欧美超级乱淫片喷水| 日本一区二区在线免费播放| 国产精品影片在线观看| 欧美肥臀大乳一区二区免费视频| 亚洲女人初尝黑人巨大| 欧美另类第一页| 日韩美女免费线视频| 久久天天躁狠狠躁老女人| 中文在线资源观看视频网站免费不卡| 亚洲国产精品高清久久久| 国产视频福利一区| 成人激情电影一区二区| 亚洲一区二区久久久久久| 久久久国产一区| 欧美另类69精品久久久久9999| 热99精品里视频精品| 久久青草福利网站| 97国产精品视频人人做人人爱| 欧美丰满少妇xxxx| 91精品久久久久久久久久| 日韩视频永久免费观看| 日本亚洲精品在线观看| 国产亚洲精品久久久久久牛牛| 国产mv免费观看入口亚洲| 欧美国产亚洲视频| 久久精品久久久久| 成人www视频在线观看| 欧美日本啪啪无遮挡网站| 精品自拍视频在线观看| 中文字幕日韩有码| 日本不卡高字幕在线2019| 国产精品18久久久久久首页狼| 久久精品国产亚洲| 亚洲va国产va天堂va久久| 亚洲成人999| 亚洲第一视频在线观看| 欧美孕妇性xx| 97人人爽人人喊人人模波多| 久久中文字幕在线视频| 国产精品爱啪在线线免费观看| 亚洲一级黄色av| 国产精品久久久精品| 2020欧美日韩在线视频| 亚洲人成电影在线观看天堂色| 亚洲永久免费观看| 久久亚洲精品一区二区| 欧美大片免费看| 欧美大片欧美激情性色a∨久久| 北条麻妃久久精品| 国产精品a久久久久久| 欧美另类精品xxxx孕妇| 国模精品视频一区二区| 综合136福利视频在线| 色综合久久久久久中文网| 日韩经典一区二区三区| 国产精品久久久久久久久男| 日韩精品一区二区视频| 91沈先生在线观看| 2019中文字幕在线免费观看| 精品久久国产精品| 91色视频在线观看| 久久全球大尺度高清视频| 国外视频精品毛片| 日韩欧美精品网站| 国产在线拍偷自揄拍精品| 日韩欧美中文第一页| 97久久精品人搡人人玩| 亚洲第一男人天堂| 久久成人免费视频| 成人观看高清在线观看免费| 搡老女人一区二区三区视频tv| 麻豆精品精华液| 国产精品久久一区主播| 亚洲人成电影网| 欧美日韩国产精品一区二区不卡中文| 欧美成aaa人片在线观看蜜臀| 亚洲图片在区色| 亚洲激情小视频| 亚洲国产欧美在线成人app| 成人午夜小视频| 国产欧美韩国高清| 97精品久久久| 欧美在线视频观看| 激情懂色av一区av二区av| 插插插亚洲综合网| 欧美激情亚洲精品| 亚洲精品按摩视频| 成人a免费视频| 亚洲在线视频福利| 国产精品福利久久久| 亚洲国产精品女人久久久| 亚洲成人网av| 日本免费在线精品| 国产精品美女免费| 亚洲国产欧美一区二区三区久久| 中文字幕免费精品一区| 亚洲精品99久久久久中文字幕| 欧美成人国产va精品日本一级| 欧美视频第一页| 亚洲毛片在线观看| 欧美日韩精品国产| 国产91在线高潮白浆在线观看| 亚洲第一天堂av| 欧美亚洲另类视频| 51精品国产黑色丝袜高跟鞋| 日韩免费观看高清| 欧美插天视频在线播放| 国产亚洲精品久久久优势| 欧美激情一二区| 成人免费在线网址| 国产丝袜一区二区| 日韩国产欧美精品一区二区三区| 一区二区亚洲欧洲国产日韩| 亚洲成人av中文字幕| 国产精品国产自产拍高清av水多| 亚洲精品www久久久| 日韩69视频在线观看| 日韩精品视频中文在线观看| 国产一区二区三区直播精品电影| www.日韩.com| 欧洲精品在线视频| 亚洲精品国产品国语在线| 国内精品国产三级国产在线专| 亚洲成人精品视频| 亚洲春色另类小说| 97在线视频免费观看| 中文字幕日韩欧美精品在线观看| 欧美成人精品一区二区三区| 久久大大胆人体| 亚洲伊人成综合成人网| 色哟哟网站入口亚洲精品| 欧美性xxxxxxxxx| 一道本无吗dⅴd在线播放一区| 国产精品69久久久久|