91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mongodb 分組 topN

發布時間:2020-07-14 10:42:18 來源:網絡 閱讀:305 作者:raqsoft 欄目:大數據

??????在統計應用項目中,我們經常會遇到這樣的需求:將大量的對象進行排序,然后只需要取出前 N 名作為排行榜的數據,這就是 TopN 算法。mongodb作為nosql數據庫的典型代表,能夠存儲海量數據,在使用過程中也經常會遇到TopN的需求,例如將需要字段的最新數據從mongodb中獲取出來。下面就使用集算器 SPL 語言操作,通過案例分析如何實現上述功能。

??????Collection last3有兩個字段:variable和timestamp,這里首先按variable分組,然后在每組文檔中選出timestamp最晚的3個,最后再從這些文檔中找到timestamp最早的1個。

??????last3的部分數據如下:

{"_id" : ? ObjectId("54f69645e4b077ed8d997857"),"variable" : ? "A", "timestamp" : ISODate("1995-01-01T00:00:00Z")}

{"_id" : ? ObjectId("54f69645e4b077ed8d997856"),"variable" : ? "A", "timestamp" : ISODate("1995-01-02T00:00:00Z")}

{"_id" : ? ObjectId("54f69645e4b077ed8d997855"),"variable" : ? "A", "timestamp" : ISODate("1995-01-03T00:00:00Z")}

{"_id" : ? ObjectId("54f69645e4b077ed8d997854"),"variable" : ? "B", "timestamp" : ISODate("1995-01-02T00:00:00Z")}

{"_id" : ? ObjectId("54f69645e4b077ed8d997853"),"variable" : ? "B", "timestamp" : ISODate("1995-01-01T00:00:00Z")}

{"_id" : ? ObjectId("54f69645e4b077ed8d997852"),"variable" : ? "B", "timestamp" : ISODate("1994-01-03T00:00:00Z")}

{"_id" : ? ObjectId("54f69645e4b077ed8d997851"),"variable" : ? "C", "timestamp" : ISODate("1994-01-03T00:00:00Z")}

{"_id" : ? ObjectId("54f69645e4b077ed8d997850"),"variable" : ? "C", "timestamp" : ISODate("1994-01-02T00:00:00Z")}

{"_id" : ? ObjectId("54f69645e4b077ed8d997858"),"variable" : ? "C", "timestamp" : ISODate("1994-01-01T00:00:00Z")}

{"_id" : ? ObjectId("54f69645e4b077ed8d997859"),"variable" : ? "C", "timestamp" : ISODate("1993-01-01T00:00:00Z")}

集算器代碼:


AB
1=mongo_open("mongodb://localhost:27017/local?user=test&password=test")
2=mongo_shell(A1,"last3.find(,{_id:0};{variable:1})")
3for A2;variable=A3.top(3;-timestamp)
4
=@|B3
5=B4.minp(~.timestamp)
6=mongo_close(A1)

??????A1:連接MongoDB,連接字格式為mongo://ip:port/db?arg=value&…。

??????A2:使用find函數從MongoDB中取數并排序,形成游標。collectoin是last3,過濾條件是空,取出_id之外的所有字段,并按variable排序。

??????A3:循環從游標讀數,每次取variable字段相同的一組文檔。A3循環的的作用范圍是縮進的B3到B4,在這個范圍中可以用A3來引用循環變量,這里A3是內存數據,在調試方式下可以查看某次取數的結果如下:

variabletimestamp
C1994-01-03 08:00:00
C1994-01-02 08:00:00
C1994-01-01 08:00:00
C1993-01-01 08:00:00

??????B3:選出本組文檔中timestamp最晚(大)的3個。

??????B4:將B3不斷地追加到B4中。B4如下:

variabletimestamp
A1995-01-03 08:00:00
A1995-01-02 08:00:00
A1995-01-01 08:00:00
B1995-01-02 08:00:00
B1995-01-01 08:00:00
B1994-01-03 08:00:00
C1994-01-03 08:00:00
C1994-01-02 08:00:00
C1994-01-01 08:00:00

??????A5:選出B4中timstamp最早(小)的那個文檔,即:

variabletimestamp
C1994-01-01 08:00:00

??????A6:關閉mongodb連接。

??????實現類似Mongodb的topN的需求,使用SPL語言能簡化mongodb shell的實現,相對mongodb腳本容易多了。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

澎湖县| 饶阳县| 三江| 宁都县| 云安县| 兴安县| 荆州市| 古田县| 嘉义市| 陕西省| 重庆市| 萨嘎县| 长沙市| 屯门区| 福清市| 文山县| 巴林右旗| 凌云县| 武清区| 宜阳县| 江孜县| 霍州市| 岢岚县| 乌拉特前旗| 襄垣县| 五寨县| 阿巴嘎旗| 察隅县| 望谟县| 县级市| 旬邑县| 荥经县| 会昌县| 武邑县| 腾冲县| 福建省| 屏山县| 江源县| 长寿区| 博客| 明光市|