溫馨提示×

溫馨提示×

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

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

集算器協助MongoDB計算之本地化排序

發布時間:2020-06-08 08:12:28 來源:網絡 閱讀:559 作者:datanalysis 欄目:MongoDB數據庫

對于本地化語言(例如:中文),MongoDB是按照UNICODE編碼排序,而不是根據本地語言的編碼排序。用esProc結合MongoDB可以方便的實現本地化語言的排序(例如:中文按照拼音排序)。下面我們以中文為例,來看一下具體做法。

MongoDB中的集合person保存了姓名和性別如下:

>db.person.find()

{"_id" : ObjectId("544e4e070f03ad39eb2bf498"),"name" : "宋江", "gender" : ""}

{"_id" : ObjectId("544e4e070f03ad39eb2bf499"),"name" : "李逵", "gender" : ""}

{"_id" : ObjectId("544e4e070f03ad39eb2bf49a"),"name" : "吳用", "gender" : ""}

{"_id" : ObjectId("544e4e070f03ad39eb2bf49b"),"name" : "晁蓋", "gender" : ""}

{"_id" : ObjectId("544e4e070f03ad39eb2bf49c"),"name" : "公孫勝", "gender" : "" }

{"_id" : ObjectId("544e4e070f03ad39eb2bf49d"),"name" : "魯智深", "gender" : "" }

{"_id" : ObjectId("544e4e070f03ad39eb2bf49e"),"name" : "武松", "gender" : ""}

{"_id" : ObjectId("544e4e070f03ad39eb2bf49f"),"name" : "阮小二", "gender" : "" }

{"_id" : ObjectId("544e4e070f03ad39eb2bf4a0"),"name" : "楊志", "gender" : ""}

{"_id" : ObjectId("544e4e070f03ad39eb2bf4a1"), "name": "孫二娘", "gender" : "" }

{"_id" : ObjectId("544e4e070f03ad39eb2bf4a2"),"name" : "扈三娘", "gender" : "" }

{"_id" : ObjectId("544e4e080f03ad39eb2bf4a3"),"name" : "燕青", "gender" : ""}

直接用MongoDBsort函數,沒有按照拼音排序:

>db.person.find({},{"name":1,"gender":1,"_id":0}).sort({"name":1})

{"name" : "公孫勝", "gender" : "" }

{"name" : "吳用", "gender" : "" }

{"name" : "孫二娘", "gender" : "" }

{"name" : "宋江", "gender" : "" }

{"name" : "扈三娘", "gender" : "" }

{"name" : "晁蓋", "gender" : "" }

{"name" : "李逵", "gender" : "" }

{"name" : "楊志", "gender" : "" }

{"name" : "武松", "gender" : "" }

{"name" : "燕青", "gender" : "" }

{"name" : "阮小二", "gender" : "" }

{"name" : "魯智深", "gender" : "" }

 

esProc協助MongoDB的腳本如下:

集算器協助MongoDB計算之本地化排序

    A1:連接MongoDB,ip和端口號是localhost:27017,數據庫是test,用戶名和密碼都是test。如果需要其他參數的話可以按照mongo://ip:port/db?arg=value&…格式繼續寫參數。

    A2:使用find函數從MongoDB中取數,形成游標。集合是person,過濾條件是空,指定鍵是namegender??梢钥闯?/span>find函數和mongdbfind函數類似。esProc的游標是分批讀取和處理數據,可以避免數據量過大,內存出現溢出的情況。

A3:因為數據量不大,所以這里fetch出游標的所有記錄。

A4:使用sort按照name升序排序。排序所使用的語言是中文。集算器支持的其他本地化語言,見后。

運行的結果是:

集算器協助MongoDB計算之本地化排序

需要說明的是:esProc并不包含MongoDBjava驅動包。用esProc來訪問MongoDB,必須提前將MongoDBjava驅動包(要求2.12.2或以上版,如mongo-java-driver-2.12.2.jar)放到[esProc安裝目錄]\common\jdbc中。

esProc協助MongoDB計算的腳本很容易集成到java中,只要增加一行A5,寫成result A4即可向java輸出resultset形式的結果,具體的代碼參考esProc教程。同樣,用java調用esProc訪問MongoDB也必須將mongdbjava驅動包放到java程序的classpath中。

MongoDBjava驅動包下載地址是:https://github.com/MongoDB/mongo-java-driver/releases。




向AI問一下細節

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

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女