2016-06-28 97 views
2

我從Java寫入一個Long值到MongoDB,它將其存儲爲int64。 瀏覽經由RoboMongo數據I可以看到下面的值:MongoDB int64和JavaScript

nanoTimestamp: 1467100788819818000

然後我取在JS(使用流星)和i的值最終與下面的對象:

Object {_bsontype: "Long", low_: 932437528, high_: 341586032}

我如何在客戶端使用這種類型?

回答

0

這裏的問題是JavaScript的數字類型是IEEE-754雙精度二進制浮點,它具有大約15位的小數精度。因此,儘管你可以該BSON龍獲得了JS數:

// May not be precise! 
var num = l.high_ * Math.pow(2,32) + l.low_; 

......它不會是完全一樣的號碼(在你的榜樣情況下,它會出來1467100837142847000)。

如果可以確定它不準確(我們在這裏談論的是納秒),那麼你就全部設置好了。

如果沒有,你需要應付這些在JavaScript中,你可能會考慮將它們記錄爲字符串而不是長:

 
nanoTimestamp: "1467100788819818000" 

...然後用了幾個JavaScript的一個「大數字「庫,可以對任意大整數或浮點數進行操作。