如何在Mongo shell中对NumberLong值执行精确算术运算?我的理解是Javascript只有一种数字类型 - number
- 通常限于54位浮点精度。
使用(例如)标准加法的直接算术显示降级强制到低精度类型:
> NumberLong("123456789012345678")+NumberLong("1")
123456789012345680
> NumberLong("123456789012345678")+NumberLong("2")
123456789012345680
我可以看到如何使用字符串表示来提取NumberLong的部分,但这似乎效率低下,并且对增量或除法等算术运算没有用。
答案 0 :(得分:2)
MongoDB对NumberLong使用BSON 64 bit Int type(Mongo type code 18)。 db内核可以通过执行更新操作对这些元素(用C ++编写的内核)执行精确的算术运算,但如果你想在javascript shell中执行此操作,则需要一个像Google this one这样的库。