2016-06-28 99 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的一个“大数字“库,可以对任意大整数或浮点数进行操作。