真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

集算器協(xié)助MongoDB計(jì)算之?dāng)?shù)位比較

  MongoDB腳本解決復(fù)雜問(wèn)題的計(jì)算能力有限,直接使用時(shí)較為吃力。很多情況下需要將數(shù)據(jù)讀出后在主程序中進(jìn)一步完成運(yùn)算,而在Java等高級(jí)語(yǔ)言中編寫(xiě)這類(lèi)集合式運(yùn)算也比較麻煩。這時(shí)可以用集算器esProc來(lái)輔助,這里通過(guò)一個(gè)例子來(lái)說(shuō)明。

遂平網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站開(kāi)發(fā)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)建站從2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。

Mongodb中有一個(gè)test集合如下:

>db.test.find({},{"_id":0})

{"value" : NumberLong(112937552) }

{"value" : NumberLong(715634640) }

{"value" : NumberLong(487229712) }

{"value" : NumberLong(79198330) }

{"value" : NumberLong(440998943) }

{"value" : NumberLong(93148782) }

{"value" : NumberLong(553008873) }

{"value" : NumberLong(336369168) }

{"value" : NumberLong(369669461) }

具體的:test集合包含多個(gè)value,每個(gè)value是一個(gè)數(shù)字串。每個(gè)數(shù)字串都要和另外所有的數(shù)字串比較,找出每個(gè)數(shù)字串的最大相同數(shù)和最大不同數(shù)。如果第1行和第n行都含有數(shù)字1,就算相同數(shù)有1個(gè),如果第1行有1第n行沒(méi)有,就算不同數(shù)有1個(gè)。

  集算器代碼如下:

集算器協(xié)助MongoDB計(jì)算之?dāng)?shù)位比較

A1:連接mongodb,ip和端口號(hào)是localhost:27017,數(shù)據(jù)庫(kù)是test,用戶(hù)名和密碼都是test。

  A2:使用find函數(shù)從mongodb中取數(shù),形成游標(biāo)。集合是test,過(guò)濾條件是空,鍵_id不取出??梢钥闯觯琫sProc在find函數(shù)中采用了和mongdb的find語(yǔ)句一樣的參數(shù)格式。esProc的游標(biāo)支持分批讀取和處理數(shù)據(jù),可以避免數(shù)據(jù)量過(guò)大,內(nèi)存出現(xiàn)溢出的情況。這里因?yàn)閿?shù)據(jù)量不大,所以用fetch出游標(biāo)的所有記錄。

  A3:在A2的基礎(chǔ)上增加兩列,用來(lái)存放最大相同數(shù)和最大不同數(shù)。同時(shí)把value轉(zhuǎn)成字符串。

  A4:針對(duì)A3集合循環(huán),循環(huán)體是B4到D10。

B4:取當(dāng)前循環(huán)的value。

C4:利用函數(shù)將value分拆成單個(gè)字符組成的序列,去掉重復(fù)的值。

B5:對(duì)A3再進(jìn)行一次內(nèi)層循環(huán)。循環(huán)體是C6到D10。

C5:如果內(nèi)層循環(huán)的循環(huán)位置和外層當(dāng)前位置的相等,也就是說(shuō)是同一個(gè)value的話,就跳過(guò)本次內(nèi)層循環(huán),進(jìn)行下一次內(nèi)層循環(huán)。

C6:取得內(nèi)層循環(huán)的value。

C7:定義兩個(gè)變量same和diff,分別存放本次比較的相同數(shù)和不同數(shù),初始值為0。

C8:利用循環(huán)函數(shù),在內(nèi)層循環(huán)的value中逐個(gè)查找外層循環(huán)的value分拆的序列數(shù)值。如果能找到,則same自加1,否則diff自加1。

C9、C10:將same和diff和A4中的same和diff比較,將較大的重新賦值給A4中的same和diff。

運(yùn)行結(jié)果是:

集算器協(xié)助MongoDB計(jì)算之?dāng)?shù)位比較

需要說(shuō)明的是:esProc并不包含mongodb的java驅(qū)動(dòng)包。用esProc來(lái)訪問(wèn)mongodb,必須提前將mongodb的java驅(qū)動(dòng)包(要求2.12.2或以上版,如mongo-java-driver-2.12.2.jar)放到[esProc安裝目錄](méi)\common\jdbc中。

集算器esProc協(xié)助mongodb計(jì)算的腳本很容易集成到j(luò)ava中,只要增加一行A11,寫(xiě)成result A3即可向java輸出resultset形式的結(jié)果,具體的代碼參考esProc教程。同樣,用java調(diào)用esProc訪問(wèn)mongodb也必須將mongdb的java驅(qū)動(dòng)包放到j(luò)ava程序的classpath中。



文章名稱(chēng):集算器協(xié)助MongoDB計(jì)算之?dāng)?shù)位比較
文章來(lái)源:http://weahome.cn/article/gsippc.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部