欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

mongodb分組topN-創(chuàng)新互聯(lián)

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

創(chuàng)新互聯(lián)公司是專業(yè)的平南網(wǎng)站建設(shè)公司,平南接單;提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行平南網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

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

last3的部分?jǐn)?shù)據(jù)如下:

{"_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函數(shù)從MongoDB中取數(shù)并排序,形成游標(biāo)。collectoin是last3,過濾條件是空,取出_id之外的所有字段,并按variable排序。

A3:循環(huán)從游標(biāo)讀數(shù),每次取variable字段相同的一組文檔。A3循環(huán)的的作用范圍是縮進(jìn)的B3到B4,在這個范圍中可以用A3來引用循環(huán)變量,這里A3是內(nèi)存數(shù)據(jù),在調(diào)試方式下可以查看某次取數(shù)的結(jié)果如下:

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:關(guān)閉mongodb連接。

實(shí)現(xiàn)類似Mongodb的topN的需求,使用SPL語言能簡化mongodb shell的實(shí)現(xiàn),相對mongodb腳本容易多了。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

當(dāng)前題目:mongodb分組topN-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://chinadenli.net/article20/cdpjjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、App開發(fā)手機(jī)網(wǎng)站建設(shè)、商城網(wǎng)站、自適應(yīng)網(wǎng)站網(wǎng)站設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)