Mongo shell 中的 NumberLong 算术

Rub*_*ONO 5 javascript mongodb

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

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

> NumberLong("123456789012345678")+NumberLong("1") 
123456789012345680
> NumberLong("123456789012345678")+NumberLong("2")
123456789012345680
Run Code Online (Sandbox Code Playgroud)

我可以看到如何使用字符串表示形式提取 NumberLong 的部分,但这似乎效率低下,并且对于增量或除法等算术运算没有用处。

jpr*_*ham 2

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