潤乾報表如何從 mongodb 中取數

MongoDB 屬於 NoSql 中的基於分佈式文件存儲的文檔型數據庫,是非關係數據庫當中功能最豐富,最像關係數據庫的。它支持的數據結構非常鬆散,是類似 json 的 bson 格式,因此可以存儲比較複雜的數據類型。Mongo 最大的特點是它支持的查詢語言非常強大,其語法有點類似於面向對象的查詢語言,幾乎可以實現類似關係數據庫單表查詢的絕大部分功能,但是由於其屬於 nosql 型,所以很難想普通數據庫那樣通過 jdbc 連接,通過 sql 取數,下面介紹下,如何在潤乾報表中連接 mongodb 並從中取數。

針對於一些特殊數據庫(不能用 jdbc 或者 odbc 連接),潤乾開發了外部庫功能,對一些特殊數據庫功能進行了封裝,直接使用封裝後的函數就可以實現特殊數據庫的連接、讀取、計算等功能,要想使用外部庫功能,需要集算器或者腳本數據集的支持。

集算器中連接方法:

集算器中設置外部庫可以參考文檔(如不需要集算器直接使用報表,此處可略過):

集算器外部庫指南:(http://c.raqsoft.com.cn/article/1532597958129)

外部庫 jar 包下載地址:(http://c.raqsoft.com.cn/article/1532597958129)

具體使用見文檔中即可,比如現在 mongodb 中有張數據表(集合)student,裏邊數據爲:

1jpg

在集算器中寫腳本:

2jpg

A1:=mongo_open(“mongodb://127.0.0.1:27017/test”) 連接 test 數據庫,用戶名和密碼爲空

A2:=mongo_shell(A1,“student.find()”).fetch() 從 student 中取數,也可以實現 count、distinct 和 aggregate 操作

這樣,A2 單元格就能夠從 student 表中取出數據。

將這個腳本保存成 dfx 文件,在報表中可以增加一個集算器數據集,用這個 dfx 文件做爲數據集就行。

潤乾報表連接方法:

在一些項目中,需求比較簡單,可能並不需要集算器,那麼可以使用潤乾報表的腳本數據集,下面介紹下,在潤乾報表中如何通過腳本數據集連接 mongodb 數據庫。

1、下載需要的外部庫包,下載地址爲:(http://c.raqsoft.com.cn/article/1532597958129)
並解壓,比如放到:G:\extlib,下邊子目錄爲各個不同的數據庫目錄,然後下載 mongo-java-driver-3.6.3.jar,具體版本號可以根據數據庫版本來確定,下載後放到 G:\extlib\MongodbCli 中,在這個目錄中有個 mongoCli.jar,這個是潤乾針對 mongodb 開發的外部庫的 jar 包。

2、啓動報表設計器,在工具欄中選擇 工具——選項,找到集算器選項標籤,在外部庫目中選擇步驟 1 中的 G:\extlib,並且勾中 MongodbCli,如圖:

3jpg

如果還需要其他外部庫,在這裏選中就行,點擊確定,然後重啓設計器

3、新建報表,新建數據集時選擇腳本數據集,在腳本數據集中寫入:

4jpg

A1:=mongo_open(“mongodb://127.0.0.1:27017/test”) 連接 test 數據庫,用戶名和密碼爲空

A2:=mongo_shell(A1,“student.find()”).fetch() 從 student 中取數,也可以實現 count、distinct 和 aggregate 操作

點擊確定,這樣就可以基於這個腳本數據集設計報表,設計模板如下:

5jpg

預覽結果:

6jpg

參數過濾

實際應用中,通常要傳入參數對數據進行過濾,下面已年齡爲例,看下如果通過參數對數據進行過濾。

在報表中增加參數:age,數據類型爲整數:

7jpg

現在要查詢 student 表中年齡大於傳入參數的數據,那麼更改腳本數據集的 A2 單元格爲:

=mongo_shell(A1,“student.find({\“age\”:{$gt:”+string(age)+“}})”).fetch()

這裏用的是大於,等於有其他寫法,具體可以百度下。

這樣的話,設計器下報表就能夠通過腳本數據集從 mongodb 數據庫中取數,並且能夠對數據進行過濾。

現在的外部庫配置,是通過 工具——選項,外部庫的設置中配置的,如果報表需要部署到 web 服務器上發佈,那麼還需要在潤乾的配置文件中設置外部庫的配置:

打開 WEB-INF 下的 raqsoftConfig.xml, 找到…… 節點,在這個節點內增加:

 <extLibsPath>G:\\extlib</extLibsPath>

 <importLibs>

 <lib>MongodbCli</lib>

 </importLibs>

注:extLibsPath 標籤設置外部庫的根目錄

importLibs 設置外部庫中對應數據庫的 jar 存放目錄。

常見問題:

設置完腳本數據集,預覽報表時,通常會報錯:無法識別的表達式 mongo_open()

解決辦法:

1、查看外部庫設置是否正常

2、現在 mongodb 通常爲 64 位,並且潤乾的 mongoCli.jar 也是基於高版本的 jdk 編譯,所以檢查報表安裝時的 jdk 版本,設計器自帶的是 1.6,建議安裝時選擇本機高版本的 jdk

這樣,潤乾報表就可以連接 mongodb 數據庫,並且從中取數數據進行展示。當然,集算器腳本中還提供了 mongodb 的更多計算方法,具體可以訪問潤乾乾學院:http://c.raqsoft.com.cn/,右上角搜索欄中搜多 mongodb,會列出更多資源,可進行參考:

8jpg

更多數據源相關問題請查看:數據源相關問題分類導航

發佈了42 篇原創文章 · 獲贊 15 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章