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

首頁 > 數據庫 > MongoDB > 正文

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

2020-10-29 18:42:16
字體:
來源:轉載
供稿:網友

前言

今天開發同學向我們提了一個緊急的需求,從集合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筆。

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

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

總結

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品在线看| 精品福利一区二区| 尤物九九久久国产精品的特点| 91在线视频精品| 久久亚洲精品一区二区| 国产精品女主播| 欧美精品第一页在线播放| 91在线免费观看网站| 日韩中文字幕免费看| 91成品人片a无限观看| 日韩va亚洲va欧洲va国产| 国产精品大陆在线观看| 国内精品伊人久久| 亚洲天堂av在线免费观看| 国产精品日韩在线一区| 欧美三级欧美成人高清www| 国产成人精品久久二区二区91| 国产一区二区美女视频| 68精品久久久久久欧美| 亚洲最新视频在线| 久久精品亚洲精品| 一本色道久久综合亚洲精品小说| 久久精品国产精品| 亚洲综合国产精品| 亚洲老头老太hd| 日本三级韩国三级久久| 久久久久日韩精品久久久男男| 高清欧美性猛交xxxx黑人猛交| 中文字幕日韩欧美| 欧美乱人伦中文字幕在线| 欧美日韩国产色| 亚洲高清一二三区| 日韩中文字幕国产精品| 久久久久久久激情视频| 欧美专区在线观看| 久久精品中文字幕免费mv| 久久精品视频va| 亚洲电影av在线| 国产精品18久久久久久麻辣| 九九久久国产精品| 欧美成人中文字幕在线| 欧美孕妇毛茸茸xxxx| 亚洲人成啪啪网站| 韩国精品久久久999| 色婷婷久久一区二区| 国产一区二区三区在线免费观看| 亚洲国产日韩欧美在线动漫| 国产在线拍偷自揄拍精品| 成人性生交大片免费观看嘿嘿视频| 亚洲香蕉av在线一区二区三区| 中文字幕少妇一区二区三区| 成人中心免费视频| 久久久天堂国产精品女人| 激情懂色av一区av二区av| 国产精品久久久久久影视| 国产精品一区二区3区| 久久精品人人爽| 91精品久久久久久久久不口人| 国产一区私人高清影院| 日韩免费观看网站| 亲子乱一区二区三区电影| 亚洲毛片在线观看.| 久久久久久中文| 日韩激情av在线免费观看| 夜夜嗨av一区二区三区免费区| 欧美精品videofree1080p| 欧美人与性动交a欧美精品| 欧洲亚洲妇女av| 在线播放国产精品| 伊人亚洲福利一区二区三区| 综合136福利视频在线| 日韩欧美在线第一页| 日韩欧美国产免费播放| 成人午夜两性视频| 美女啪啪无遮挡免费久久网站| 亚洲精品色婷婷福利天堂| xxav国产精品美女主播| 亚洲欧美第一页| 国产精品999999| 成人免费高清完整版在线观看| 色悠悠久久久久| 这里只有精品视频| 成人黄色在线免费| 成人免费视频97| 国产精品吊钟奶在线| 欧美成人剧情片在线观看| 欧美精品第一页在线播放| 欧美国产乱视频| 欧美精品videofree1080p| 怡红院精品视频| 成人www视频在线观看| 欧美一级淫片aaaaaaa视频| 亚洲成人网av| 精品亚洲一区二区三区在线播放| 青草热久免费精品视频| 国产精品久久久久久av福利软件| 欧美成人精品激情在线观看| 亚洲影视中文字幕| 97免费在线视频| 国产一区二区三区精品久久久| 成人一区二区电影| 久久精品国产2020观看福利| 国产视频久久久久| 国产婷婷成人久久av免费高清| 欧美性xxxx极品高清hd直播| 亚洲二区中文字幕| 亚洲欧洲中文天堂| 97免费视频在线| 91久久久久久久久久久久久| 日韩欧美一区二区三区久久| 国产精品自产拍在线观看中文| 日韩福利在线播放| 亚洲激情中文字幕| 91在线视频导航| 欧美乱大交做爰xxxⅹ性3| 精品av在线播放| 欧美日韩一区二区免费在线观看| 国产精品av网站| 国产不卡在线观看| 777国产偷窥盗摄精品视频| 欧美俄罗斯性视频| 国产精品国产三级国产专播精品人| 亚洲免费电影一区| 国产精品高潮呻吟久久av黑人| 97国产精品久久| 亚洲系列中文字幕| 亚洲精品电影在线| www亚洲欧美| 亚洲精品电影网在线观看| 在线播放日韩精品| 中文字幕日韩欧美精品在线观看| 日韩亚洲成人av在线| 亚洲国产99精品国自产| 欧美日韩综合视频| 97视频在线观看免费高清完整版在线观看| 91久久综合亚洲鲁鲁五月天| 5566日本婷婷色中文字幕97| 国产精品爽爽爽爽爽爽在线观看| 欧美人成在线视频| 欧美一区二区三区免费视| 中文字幕v亚洲ⅴv天堂| 国外成人性视频| 成人国产精品久久久久久亚洲| 久久九九亚洲综合| 欧美日韩国产va另类| 色悠久久久久综合先锋影音下载| 欧美理论片在线观看| 亚洲男人7777| 欧美在线视频免费观看| 亚洲片国产一区一级在线观看| 57pao成人永久免费视频| 亚洲精品电影久久久| 美女福利视频一区| 色偷偷亚洲男人天堂| 福利二区91精品bt7086| 日本国产精品视频| 国产精品极品尤物在线观看| 国产主播欧美精品| 国产亚洲精品久久久久久777| 97在线免费观看| 成人在线小视频| 亚洲欧美中文日韩在线| 成人有码在线视频| 九九九久久久久久|