MongoDB Java開發從Mongo讀取Object值轉Long異常引起的資料型別轉換異常

清風艾艾發表於2020-07-30

    近期,在一個自動化運維平臺中,透過前臺頁面修改監控採數頻率,結果平臺監控不再重新整理,觀察後臺日誌,發現

一直刷資料型別轉換異常的錯誤。

     開發語言:JAVA

    JDK版本:java version "1.8.0_211"

    MongoDB版本:3.2.16

    後臺日誌報錯如下:

    根據報錯提示的java類定位到具體的報錯程式碼如下:

    由此,可知引起異常的程式碼是:

long intervalDynamic = conf.getLong("interval_dynamic");

    觀察MongoDB內對應的資料:

    到此,問題可能出在:程式在對mongodb資料庫裡的interval_dynamic從Object轉換成Long時出現資料型別轉換異常。

經溝通監控平臺的初始化是後臺指令碼初始化,mongdb初始化的時候是數字型別,監控取出的時候是bson,按key取值為

Object型別,不能直接強制轉換成Long,可能跟JDK版本有關。

    經除錯,將資料轉換做如下調整,程式恢復正常執行:

    總結:JAVA讀取MongoDB資料為二進位制的Bson,JAVA按欄位獲取到的資料為Object資料,在轉換為Long之前,先過

渡轉換為String型別,再使用Long.valueOf(String)方法將String資料轉換為Long型別。


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

相關文章