我从Java写一个Long值到MongoDB,它将它存储为int64。 通过RoboMongo浏览数据我可以看到以下值:
nanoTimestamp: 1467100788819818000
然后我获取JS中的值(使用meteor),最后得到以下对象:
Object {_bsontype: "Long", low_: 932437528, high_: 341586032}
如何在客户端使用此类型?
答案 0 :(得分:0)
这里的问题是JavaScript的数字类型是IEEE-754双精度二进制浮点,它具有大约15位十进制精度。所以虽然你可以从BSON Long获得一个JS号码:
// May not be precise!
var num = l.high_ * Math.pow(2,32) + l.low_;
...它不会是完全相同的数字(在你的例子中,它会出来1467100837142847000)。
如果它是不精确的(我们在这里谈论的是纳秒),那么你已经完成了。
如果没有,并且您需要在JavaScript中处理这些问题,您可以考虑将它们记录为字符串而不是Long:
nanoTimestamp: "1467100788819818000"
...然后使用几个JavaScript“大数”库中的一个,可以对任意大整数或浮点数进行操作。