关于javascript:Mongo shell中的NumberLong算术

NumberLong arithmetic in the Mongo shell

如何在Mongo Shell中对NumberLong值执行精确的算术运算?据我了解,Javascript仅具有一种数字类型-number-通常限于54位浮点精度。

使用(例如)标准加法的直接算术显示将强制转换为较低精度类型:

1
2
3
4
> NumberLong("123456789012345678")+NumberLong("1")
123456789012345680
> NumberLong("123456789012345678")+NumberLong("2")
123456789012345680

我可以看到如何使用字符串表示法提取NumberLong的部分,但这似乎效率不高,并且对于诸如增量或除法之类的算术运算没有用。


MongoDB对NumberLong使用BSON 64位Int类型(Mongo类型代码18)。 db内核可以通过执行更新操作对这些元素(用C编写的内核)执行精确的算术,但是如果您想在javascript shell中执行此操作,则需要一个类似Google的库。