BIRT 如何連線 MongoDB

xiaohuihui發表於2020-07-05

MongoDB 不同於 Oracle,MYSQL 這些關聯式資料庫,沒有提供 JDBC 連線,查詢語言也不是 SQL 了,換成了一套有些複雜的指令碼語言。

BIRT 裡怎麼連 MongoDB 呢,通常是這兩種方式:

1、 新建 Scripted Data Source,然後定義它的資料集,透過 open、fetch 事件裡寫 javascript 指令碼,呼叫 Mongo Java Driver 從 MongoDB 取數。

2、 後來 BIRT 增加了專門的 MongoDB Data Source 型別的資料來源,這樣就有了專用的 MongoDB 資料集定義介面,簡單的查詢免去了寫 MongoDB 指令碼的麻煩,但對分組聚合、JOIN 關聯仍然無能為力。

那有沒有 MongoDB 的 JDBC 呢?集算器JDBC給出了第三種連線方式,下面以兩表join為例簡單說明一下:

1、編寫集算器的SPL指令碼,儲存為 c1c2Join.dfx 檔案


A
1 =mongo_open("mongodb://127.0.0.1:27017/raqdb")
2 =mongo_shell(A1,"c1.find()").fetch()
3 =mongo_shell(A1,"c2.find()").fetch()
4 =A2.join(user1:user2,A3:user1:user2,output)
5 >A1.close()

    執行結果為:

user1 user2 income output
1 2 0.56 0.3
1 3 0.26 0.4

同樣功能的Mongo指令碼是這樣:

3png

2、在birt裡部署集算器JDBC,然後 JDBC 執行的語句裡呼叫上面檔名就可以了:

4png

其實,BIRT用什麼方式來連線MongoDB,並不會有太大的優劣之分,而網友們追問的BIRT怎麼查詢MongoDB,背後隱含了一個沒有明說的難點,應該是在問:BIRT透過什麼方式連線MongoDB?連上後又有什麼簡單的方法能查詢資料?MongoDB 的查詢指令碼太難寫了!

集算器提供了更通用的JDBC連線方式,這是個小改善;而SPL指令碼因為是完善的集合化查詢語言,針對 MongoDB 這種多層巢狀的資料結構,能提供高效的關聯、合併、條件、分組聚合、排序等計算能力,這才是一個很大的改進。上述例子摘自 。

 

SPL能很方便地嵌入到JAVA應用,可參考 。

具體使用方法可參考 。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900830/viewspace-2702481/,如需轉載,請註明出處,否則將追究法律責任。

相關文章